1: C===============================================================================
2: C RPL/2 (R) version 4.1.0.prerelease.0
3: C Copyright (C) 1989-2011 Dr. BERTRAND Joël
4: C
5: C This file is part of RPL/2.
6: C
7: C RPL/2 is free software; you can redistribute it and/or modify it
8: C under the terms of the CeCILL V2 License as published by the french
9: C CEA, CNRS and INRIA.
10: C
11: C RPL/2 is distributed in the hope that it will be useful, but WITHOUT
12: C ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13: C FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL V2 License
14: C for more details.
15: C
16: C You should have received a copy of the CeCILL License
17: C along with RPL/2. If not, write to info@cecill.info.
18: C===============================================================================
19: <<<<<<< arithmetique.f
20: C RPL/2 (R) version 4.1.0.prerelease.0
21: =======
22: C RPL/2 (R) version 4.0.23
23: >>>>>>> 1.15.2.2
24: C Copyright (C) 1989-2011 Dr. BERTRAND Joël
25: C
26: C This file is part of RPL/2.
27: C
28: C RPL/2 is free software; you can redistribute it and/or modify it
29: C under the terms of the CeCILL V2 License as published by the french
30: C CEA, CNRS and INRIA.
31: C
32: C RPL/2 is distributed in the hope that it will be useful, but WITHOUT
33: C ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
34: C FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL V2 License
35: C for more details.
36: C
37: C You should have received a copy of the CeCILL License
38: C along with RPL/2. If not, write to info@cecill.info.
39: C===============================================================================
40:
41:
42: C-- Addition -------------------------------------------------------------------
43:
44: subroutine F77ADDITIONCI(CA, IB, RESULTAT)
45:
46: implicit none
47:
48: complex*16 CA
49: complex*16 CB
50: complex*16 RESULTAT
51:
52: integer*8 IB
53:
54: CB = dcmplx(IB)
55: RESULTAT = CA + CB
56:
57: return
58: end
59:
60:
61: subroutine F77ADDITIONCC(CA, CB, RESULTAT)
62:
63: implicit none
64:
65: complex*16 CA
66: complex*16 CB
67: complex*16 RESULTAT
68:
69: RESULTAT = CA + CB
70:
71: return
72: end
73:
74:
75: subroutine F77ADDITIONCR(CA, RB, RESULTAT)
76:
77: implicit none
78:
79: complex*16 CA
80: complex*16 CB
81: complex*16 RESULTAT
82:
83: real*8 RB
84:
85: CB = dcmplx(RB)
86: RESULTAT = CA + CB
87:
88: return
89: end
90:
91: C-- Multiplication -------------------------------------------------------------
92:
93: subroutine F77MULTIPLICATIONCI(CA, IB, RESULTAT)
94:
95: implicit none
96:
97: complex*16 CA
98: complex*16 CB
99: complex*16 RESULTAT
100:
101: integer*8 IB
102:
103: CB = dcmplx(IB)
104: RESULTAT = CA * CB
105:
106: return
107: end
108:
109:
110: subroutine F77MULTIPLICATIONCC(CA, CB, RESULTAT)
111:
112: implicit none
113:
114: complex*16 CA
115: complex*16 CB
116: complex*16 RESULTAT
117:
118: RESULTAT = CA * CB
119:
120: return
121: end
122:
123:
124: subroutine F77MULTIPLICATIONCR(CA, RB, RESULTAT)
125:
126: implicit none
127:
128: complex*16 CA
129: complex*16 CB
130: complex*16 RESULTAT
131:
132: real*8 RB
133:
134: CB = dcmplx(RB)
135: RESULTAT = CA * CB
136:
137: return
138: end
139:
140: C-- Soustraction ---------------------------------------------------------------
141:
142: subroutine F77SOUSTRACTIONCI(CA, IB, RESULTAT)
143:
144: implicit none
145:
146: complex*16 CA
147: complex*16 CB
148: complex*16 RESULTAT
149:
150: integer*8 IB
151:
152: CB = dcmplx(IB)
153: RESULTAT = CA - CB
154:
155: return
156: end
157:
158:
159: subroutine F77SOUSTRACTIONIC(IA, CB, RESULTAT)
160:
161: implicit none
162:
163: complex*16 CA
164: complex*16 CB
165: complex*16 RESULTAT
166:
167: integer*8 IA
168:
169: CA = dcmplx(IA)
170: RESULTAT = CA - CB
171:
172: return
173: end
174:
175:
176: subroutine F77SOUSTRACTIONCC(CA, CB, RESULTAT)
177:
178: implicit none
179:
180: complex*16 CA
181: complex*16 CB
182: complex*16 RESULTAT
183:
184: RESULTAT = CA - CB
185:
186: return
187: end
188:
189:
190: subroutine F77SOUSTRACTIONCR(CA, RB, RESULTAT)
191:
192: implicit none
193:
194: complex*16 CA
195: complex*16 CB
196: complex*16 RESULTAT
197:
198: real*8 RB
199:
200: CB = dcmplx(RB)
201: RESULTAT = CA - CB
202:
203: return
204: end
205:
206:
207: subroutine F77SOUSTRACTIONRC(RA, CB, RESULTAT)
208:
209: implicit none
210:
211: complex*16 CA
212: complex*16 CB
213: complex*16 RESULTAT
214:
215: real*8 RA
216:
217: CA = dcmplx(RA)
218: RESULTAT = CA - CB
219:
220: return
221: end
222:
223: C-- Division -------------------------------------------------------------------
224:
225: subroutine F77DIVISIONCI(CA, IB, RESULTAT)
226:
227: implicit none
228:
229: complex*16 CA
230: complex*16 CB
231: complex*16 RESULTAT
232:
233: integer*8 IB
234:
235: CB = dcmplx(IB)
236: RESULTAT = CA / CB
237:
238: return
239: end
240:
241:
242: subroutine F77DIVISIONIC(IA, CB, RESULTAT)
243:
244: implicit none
245:
246: complex*16 CA
247: complex*16 CB
248: complex*16 RESULTAT
249:
250: integer*8 IA
251:
252: CA = dcmplx(IA)
253: RESULTAT = CA / CB
254:
255: return
256: end
257:
258:
259: subroutine F77DIVISIONCC(CA, CB, RESULTAT)
260:
261: implicit none
262:
263: complex*16 CA
264: complex*16 CB
265: complex*16 RESULTAT
266:
267: RESULTAT = CA / CB
268:
269: return
270: end
271:
272:
273: subroutine F77DIVISIONCR(CA, RB, RESULTAT)
274:
275: implicit none
276:
277: complex*16 CA
278: complex*16 CB
279: complex*16 RESULTAT
280:
281: real*8 RB
282:
283: CB = dcmplx(RB)
284: RESULTAT = CA / CB
285:
286: return
287: end
288:
289:
290: subroutine F77DIVISIONRC(RA, CB, RESULTAT)
291:
292: implicit none
293:
294: complex*16 CA
295: complex*16 CB
296: complex*16 RESULTAT
297:
298: real*8 RA
299:
300: CA = dcmplx(RA)
301: RESULTAT = CA / CB
302:
303: return
304: end
305:
306: C-- Puissance ------------------------------------------------------------------
307:
308: subroutine F77PUISSANCEII(IA, IB, RESULTAT)
309:
310: implicit none
311:
312: integer*8 IA
313: integer*8 IB
314: integer*8 RESULTAT
315:
316: RESULTAT = IA ** IB
317:
318: return
319: end
320:
321:
322: subroutine F77PUISSANCEIR(IA, RB, RESULTAT)
323:
324: implicit none
325:
326: integer*8 IA
327:
328: real*8 RB
329: real*8 RESULTAT
330:
331: RESULTAT = IA ** RB
332:
333: return
334: end
335:
336:
337: subroutine F77PUISSANCEIC(IA, CB, RESULTAT)
338:
339: implicit none
340:
341: complex*16 CB
342: complex*16 RESULTAT
343:
344: integer*8 IA
345:
346: RESULTAT = IA ** CB
347:
348: return
349: end
350:
351:
352: subroutine F77PUISSANCERI(RA, IB, RESULTAT, TRONCATURE)
353:
354: implicit none
355:
356: integer*4 INTEGER4
357: integer*4 TRONCATURE
358:
359: integer*8 IB
360:
361: real*8 RA
362: real*8 RESULTAT
363:
364: C-- IB converti en integer*4
365: INTEGER4 = IB
366:
367: if (IB.ne.INTEGER4) then
368: TRONCATURE = -1
369: else
370: TRONCATURE = 0
371: end if
372:
373: RESULTAT = RA ** INTEGER4
374:
375: return
376: end
377:
378:
379: subroutine F77PUISSANCERR(RA, RB, RESULTAT)
380:
381: implicit none
382:
383: real*8 RA
384: real*8 RB
385: real*8 RESULTAT
386:
387: RESULTAT = RA ** RB
388:
389: return
390: end
391:
392:
393: subroutine F77PUISSANCERC(RA, CB, RESULTAT)
394:
395: implicit none
396:
397: complex*16 CB
398: complex*16 RESULTAT
399:
400: real*8 RA
401:
402: RESULTAT = RA ** CB
403:
404: return
405: end
406:
407:
408: subroutine F77PUISSANCECI(CA, IB, RESULTAT, TRONCATURE)
409:
410: implicit none
411:
412: complex*16 CA
413: complex*16 RESULTAT
414:
415: integer*4 INTEGER4
416: integer*4 TRONCATURE
417:
418: integer*8 IB
419:
420: C-- IB converti en integer*4
421: INTEGER4 = IB
422:
423: if (IB.ne.INTEGER4) then
424: TRONCATURE = -1
425: else
426: TRONCATURE = 0
427: end if
428:
429: RESULTAT = CA ** INTEGER4
430:
431: return
432: end
433:
434:
435: subroutine F77PUISSANCECR(CA, RB, RESULTAT)
436:
437: implicit none
438:
439: complex*16 CA
440: complex*16 RESULTAT
441:
442: real*8 RB
443:
444: RESULTAT = CA ** RB
445:
446: return
447: end
448:
449:
450: subroutine F77PUISSANCECC(CA, CB, RESULTAT)
451:
452: implicit none
453:
454: complex*16 CA
455: complex*16 CB
456: complex*16 RESULTAT
457:
458: RESULTAT = CA ** CB
459:
460: return
461: end
462:
463: C-- Racine carrée --------------------------------------------------------------
464:
465: subroutine F77RACINECARREEIP(IA, RESULTAT)
466:
467: implicit none
468:
469: integer*8 IA
470:
471: real*8 RA
472: real*8 RESULTAT
473:
474: RA = dble(IA)
475: RESULTAT = sqrt(RA)
476:
477: return
478: end
479:
480:
481: subroutine F77RACINECARREEIN(IA, RESULTAT)
482:
483: implicit none
484:
485: complex*16 CA
486: complex*16 RESULTAT
487:
488: integer*8 IA
489:
490: CA = dcmplx(IA)
491: RESULTAT = sqrt(CA)
492:
493: return
494: end
495:
496:
497: subroutine F77RACINECARREERP(RA, RESULTAT)
498:
499: implicit none
500:
501: real*8 RA
502: real*8 RESULTAT
503:
504: RESULTAT = sqrt(RA)
505:
506: return
507: end
508:
509:
510: subroutine F77RACINECARREERN(RA, RESULTAT)
511:
512: implicit none
513:
514: complex*16 CA
515: complex*16 RESULTAT
516:
517: real*8 RA
518:
519: CA = dcmplx(RA)
520: RESULTAT = sqrt(CA)
521:
522: return
523: end
524:
525:
526: subroutine F77RACINECARREEC(CA, RESULTAT)
527:
528: implicit none
529:
530: complex*16 CA
531: complex*16 RESULTAT
532:
533: RESULTAT = sqrt(CA)
534:
535: return
536: end
537:
538: C-- Valeur absolue -------------------------------------------------------------
539:
540: subroutine F77ABSC(C, RESULTAT)
541:
542: implicit none
543:
544: complex*16 C
545:
546: real*8 RESULTAT
547:
548: RESULTAT = ABS(C)
549:
550: return
551: end
CVSweb interface <joel.bertrand@systella.fr>