2.5. Стандартные математические функции

В языке FORTRAN есть большое количество стандартных арифметических функций, причем почти каждая из них имеет несколько разновидностей, отли­чающихся типом аргумента и типом возвращаемого значения. Здесь приводится лишь часть из них. Запись вида

INT(integer/real/complex) INTEGER означает, что функция INT может иметь аргумент любого целого, любого веще­ственного и любого комплексного типа, а результат, возвращаемый этой функ­цией, имеет тип INTEGER. Запись вида

ABS(integer/real/complex) integer/real означает, что функция ABS может иметь аргумент любого числового типа и воз­вращает значение того же типа для целых и вещественных аргументов, значение типа REAL*4 для аргумента COMPLEX*8 и значение типа REAL*8 для аргу­мента COMPLEX*16. Во всех случаях имя типа, записанное большими буквами, означает только этот конкретный тип, а имя типа, записанное малыми буквами, -любой из подходящих типов:

а) преобразование к целому типу:

1. INT(integer/real/complex) INTEGER

2. INT1 (integer/real/complex) INTEGER*1

3. INT2(integer/real/complex) INTEGER*2

4. INT4(integer/real/complex) INTEGER*4

б) преобразование к вещественному типу:

5. REAL(integer/real/complex) REAL*4

6. DREAL(integer/real/complex) REAL*8

в) преобразования символа в число:

7. ICHAR(character) INTEGER*1

г) преобразование числа в символ:

8. CHAR(integer) CHARACTER

д) целая часть числа:

9. AINT(real) real

10. DINT(real) REAL*8

е) округление:

11. ANINT(real) real

12. DNINT(real) REAL*8

13. NINT(real) INTEGERж) абсолютная величина числа:

14. ABS(integer/real/complex) integer/real

15. IABS(integer/real/complex) integer

16. DABS(integer/real/complex) REAL*S

з) знак числа (функции возвращают абсолютную величину первого аргумен­та, умноженную на знак второго аргумента):

1?. SIGN(integer/real,integer/real) integer/real 1S. ISIGN(integer/real,integer/real) INTEGER

19. DSIGN(integer/real,integer/real) REAL*S

и) остаток от деления:

20. MOD(integer/real,integer/real) integer/real

21. AMOD(integer/real,integer/real) REAL*4

22. DMOD(integer/real,integer/real) REAL*S

к) положительная разность (функции возвращают разность первого и вто­рого аргумента, если она положительна, или 0):

23. DIM(integer/real,integer/real) integer/real

24. IDIM(integer/real,integer/real) INTEGER

25. DDIM(integer/real,integer/real) REAL*S

л) максимальное и минимальное значение (функции допускают любое коли­чество аргументов):

26. MAX(integer/real,... ) integer/real

2?. MAX1(integer/real,... ) INTEGER

2S. AMAX1(integer/real,...) REAL*4

29. DMAX1(integer/real,...) REAL*S

30. MIN(integer/real,... ) integer/real

31. MIN1(integer/real,...) INTEGER

32. AMIN1 (integer/real,...) REAL*4

33. DMIN1 (integer/real,...) REAL*S м) произведение с двойной точностью:

34. DPROD(integer/real,integer/real) REAL*S

н) мнимая часть и комплексно сопряженное число:

35. IMAG(complex) real

36. DIMAG(complex) REAL*S З?. CONJG(complex) complex

3S. DCONJG(complex) COMPLEX*^ о) квадратный корень:

39. SQRT(integer/real/complex) real/complex

40. DSQRT(integer/real) REAL*S

41. CSQRT(integer/real/complex) COMPLEX*S

42. CDSQRT(integer/real/complex) COMPLEX*16 п) экспонента:

43. EXP(integer/real/complex) real/complex

44. DEXP(integer/real) REAL*8

45. CEXP(integer/real/complex) COMPLEX*8

46. CDEXP(integer/real/complex) COMPLEX*16 р) натуральный логарифм:

47. LOG(integer/real/complex) real/complex

48. ALOG(integer/real) REAL*4

49. DLOG(integer/real) REAL*8

50. CLOG(integer/real/complex) COMPLEX*8

51. CDLOG(integer/real/complex) COMPLEX*16 с) десятичный логарифм:

52. LOG10(real) real

53. ALOG10(integer/real) REAL*4

54. DLOG10(integer/real) REAL*8 т) тригонометрические функции:

55. SIN(integer/real/complex) integer/real/complex

56. DSIN(integer/real) REAL*8

57. CSIN(integer/real/complex) COMPLEX*8

58. CDSIN(integer/real/complex) COMPLEX*16

59. COS(integer/real/complex) integer/real/complex

60. DCOS(integer/real) REAL*8

61. CCOs(integer/real/complex) COMPLEX*8

62. CDCOS(integer/real/complex) COMPLEX*16

63. TAN(real) real

64. DTAN(integer/real) REAL*8

65. COTAN(real) real

66. DCOTAN(integer/real) REAL*8 у) обратные тригонометрические функции:

67. ASIN(real) real

68. DASIN(integer/real) REAL*8

69. ACOS(real) real

70. DACOS(integer/real) REAL*8

71. ATAN(real) real

72. DATAN(integer/real) REAL*8

73. ATAN2(real,real) real

74. DATAN2(integer/real,integer/real) REAL*8 ф) гиперболические функции:

75. SINH(real/complex) real

76. DSINH(integer/real/complex) REAL*8

77. COSH(real/complex) real

78. DCOSH(integer/real/complex) REAL*8

79. TANH(real/complex) real

80. DTANH(integer/real/complex) REAL*8х) битовые функции:

81. NOT(integer) integer - битовое отрицание

82. IAND(integer,integer) integer - битовое "и"

83. IOR(integer,integer) integer - битовое "или"

84. IEOR(integer,integer) integer - битовое исключающее "или"

85. ISHL(integer,integer) integer - сдвиг влево, если второй аргумент поло­жителен, или вправо, если второй аргумент отрицателен. Функция полностью аналогична операциям ShL и ShR в языке PASCAL и операциям << и >> в языке

C

86. ISHA(integer,integer) integer - "арифметический" сдвиг, в отличие от ISHL при сдвиге вправо старший - знаковый бит заполняет все освободившиеся позиции

87. ISHC(integer,integer) integer - циклический сдвиг, осуществляет цик­лическую перестановку битов, ни один бит при этом не теряется

88. BTEST(integer,integer) LOGICAL - возвращает .TRUE., если бит первого аргумента с номером, заданным вторым аргументом, единичный. Биты нумеруются от младшего к старшему, номер самого младшего бита равен 0.

89. IBCLR(integer,integer) integer - зануляет бит первого аргумента с номером, равным второму аргументу

90. IBSET(integer,integer)integer заединичивает бит первого аргумента с номером, равным второму аргументу

91. IBCHNG(integer,integer) integer - меняет значение бита на противо­положное