Fortran - ฟังก์ชั่นที่แท้จริง

ฟังก์ชันภายในเป็นฟังก์ชันทั่วไปและสำคัญบางอย่างที่จัดเตรียมไว้ให้เป็นส่วนหนึ่งของภาษาฟอร์แทรน เราได้กล่าวถึงฟังก์ชันเหล่านี้บางส่วนแล้วในบทอาร์เรย์อักขระและสตริง

ฟังก์ชันภายในสามารถแบ่งได้เป็น -

  • ฟังก์ชันตัวเลข
  • ฟังก์ชันทางคณิตศาสตร์
  • ฟังก์ชั่นการสอบถามตัวเลข
  • ฟังก์ชันการจัดการจุดลอยตัว
  • ฟังก์ชั่นการจัดการบิต
  • ฟังก์ชั่นตัวละคร
  • ชนิดฟังก์ชั่น
  • ฟังก์ชั่นตรรกะ
  • ฟังก์ชันอาร์เรย์

เราได้กล่าวถึงฟังก์ชันอาร์เรย์ในบทอาร์เรย์ ในส่วนต่อไปนี้เราให้คำอธิบายสั้น ๆ เกี่ยวกับฟังก์ชันเหล่านี้ทั้งหมดจากหมวดหมู่อื่น ๆ

ในคอลัมน์ชื่อฟังก์ชัน

  • A แสดงถึงตัวแปรตัวเลขประเภทใดก็ได้
  • R แทนตัวแปรจริงหรือจำนวนเต็ม
  • X และ Y แสดงถึงตัวแปรจริง
  • Z แสดงถึงตัวแปรที่ซับซ้อน
  • W แทนตัวแปรจริงหรือซับซ้อน

ฟังก์ชันตัวเลข

ซีเนียร์ No ฟังก์ชั่นและคำอธิบาย
1

ABS (A)

ส่งคืนค่าสัมบูรณ์ของ A

2

AIMAG (Z)

ส่งคืนส่วนจินตภาพของจำนวนเชิงซ้อน Z

3

AINT (A [, KIND])

มันจะตัดทอนส่วนที่เป็นเศษส่วนของ A ไปทางศูนย์โดยส่งกลับจำนวนจริงจำนวนเต็ม

4

ANINT (A [, KIND])

ส่งคืนค่าจริงจำนวนเต็มที่ใกล้เคียงที่สุดหรือจำนวนเต็ม

5

CEILING (A [, KIND])

ส่งคืนจำนวนเต็มที่น้อยที่สุดที่มากกว่าหรือเท่ากับตัวเลข A

6

CMPLX (X [, Y, KIND])

มันแปลงตัวแปรจริง X และ Y เป็นจำนวนเชิงซ้อน X + iY ถ้าไม่มี Y จะใช้ 0

7

CONJG (Z)

มันจะคืนค่าคอนจูเกตที่ซับซ้อนของจำนวนเชิงซ้อน Z

8

DBLE (A)

จะแปลง A เป็นจำนวนจริงที่มีความแม่นยำสองเท่า

9

DIM (X, Y)

ส่งกลับผลต่างที่เป็นบวกของ X และ Y

10

DPROD (X, Y)

ส่งคืนผลิตภัณฑ์จริงที่มีความแม่นยำสองเท่าของ X และ Y

11

FLOOR (A [, KIND])

ให้จำนวนเต็มที่มากที่สุดน้อยกว่าหรือเท่ากับจำนวน A

12

INT (A [, KIND])

มันจะแปลงตัวเลข (จริงหรือจำนวนเต็ม) เป็นจำนวนเต็มตัดทอนส่วนจริงให้เป็นศูนย์

13

MAX (A1, A2 [, A3,...])

ส่งคืนค่าสูงสุดจากอาร์กิวเมนต์ทั้งหมดเป็นประเภทเดียวกัน

14

MIN (A1, A2 [, A3,...])

ส่งคืนค่าต่ำสุดจากอาร์กิวเมนต์ทั้งหมดเป็นประเภทเดียวกัน

15

MOD (A, P)

ส่งคืนส่วนที่เหลือของ A ในการหารด้วย P อาร์กิวเมนต์ทั้งสองเป็นประเภทเดียวกัน (A-INT (A / P) * P)

16

MODULO (A, P)

ส่งคืน A modulo P: (A-FLOOR (A / P) * P)

17

NINT (A [, KIND])

จะส่งกลับจำนวนเต็มที่ใกล้ที่สุดของจำนวน A

18

REAL (A [, KIND])

มันแปลงเป็นประเภทจริง

19

SIGN (A, B)

มันจะคืนค่าสัมบูรณ์ของ A คูณด้วยเครื่องหมาย P โดยทั่วไปมันจะโอนเครื่องหมายของ B ไปเป็น A

ตัวอย่าง

program numericFunctions
implicit none  

   ! define constants  
   ! define variables
   real :: a, b 
   complex :: z
   
   ! values for a, b 
   a = 15.2345
   b = -20.7689
    
   write(*,*) 'abs(a): ',abs(a),' abs(b): ',abs(b)   
   write(*,*) 'aint(a): ',aint(a),' aint(b): ',aint(b) 
   write(*,*) 'ceiling(a): ',ceiling(a),' ceiling(b): ',ceiling(b)   
   write(*,*) 'floor(a): ',floor(a),' floor(b): ',floor(b)  
    
   z = cmplx(a, b)
   write(*,*) 'z: ',z   
   
end program numericFunctions

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังนี้ -

abs(a): 15.2344999   abs(b): 20.7688999    
aint(a): 15.0000000  aint(b): -20.0000000    
ceiling(a): 16  ceiling(b): -20
floor(a): 15  floor(b): -21
z: (15.2344999, -20.7688999)

ฟังก์ชันทางคณิตศาสตร์

ซีเนียร์ No ฟังก์ชั่นและคำอธิบาย
1

ACOS (X)

ส่งคืนค่าโคไซน์ผกผันในช่วง (0, π) เป็นเรเดียน

2

ASIN (X)

ส่งคืนไซน์ผกผันในช่วง (-π / 2, π / 2) เป็นเรเดียน

3

ATAN (X)

มันจะคืนค่าแทนเจนต์ผกผันในช่วง (-π / 2, π / 2) เป็นเรเดียน

4

ATAN2 (Y, X)

มันจะคืนค่าแทนเจนต์ผกผันในช่วง (-π, π) เป็นเรเดียน

5

COS (X)

ส่งคืนค่าโคไซน์ของอาร์กิวเมนต์เป็นเรเดียน

6

COSH (X)

ส่งคืนค่าไฮเพอร์โบลิกโคไซน์ของอาร์กิวเมนต์เป็นเรเดียน

7

EXP (X)

ส่งคืนค่าเอ็กซ์โพเนนเชียลของ X

8

LOG (X)

ส่งคืนค่าลอการิทึมธรรมชาติของ X

9

LOG10 (X)

ส่งคืนค่าลอการิทึมทั่วไป (ฐาน 10) ของ X

10

SIN (X)

ส่งคืนค่าไซน์ของอาร์กิวเมนต์เป็นเรเดียน

11

SINH (X)

ส่งคืนค่าไฮเพอร์โบลิกไซน์ของอาร์กิวเมนต์เป็นเรเดียน

12

SQRT (X)

ส่งคืนค่ารากที่สองของ X

13

TAN (X)

ส่งกลับค่าแทนเจนต์ของอาร์กิวเมนต์เป็นเรเดียน

14

TANH (X)

ส่งคืนค่าแทนเจนต์ไฮเพอร์โบลิกของอาร์กิวเมนต์เป็นเรเดียน

ตัวอย่าง

โปรแกรมต่อไปนี้คำนวณตำแหน่งแนวนอนและแนวตั้ง x และ y ตามลำดับของโพรเจกไทล์หลังจากเวลาผ่านไป t -

โดยที่ x = ut cos a และ y = ut sin a - g t2 / 2

program projectileMotion  
implicit none  

   ! define constants  
   real, parameter :: g = 9.8  
   real, parameter :: pi = 3.1415927  
   
   !define variables
   real :: a, t, u, x, y   
   
   !values for a, t, and u 
   a = 45.0
   t = 20.0
   u = 10.0
   
   ! convert angle to radians  
   a = a * pi / 180.0  
   x = u * cos(a) * t   
   y = u * sin(a) * t - 0.5 * g * t * t  
   
   write(*,*) 'x: ',x,'  y: ',y   
   
end program projectileMotion

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังนี้ -

x: 141.421356  y: -1818.57861

ฟังก์ชั่นการสอบถามตัวเลข

ฟังก์ชันเหล่านี้ทำงานร่วมกับแบบจำลองจำนวนเต็มและเลขคณิตทศนิยม ฟังก์ชันจะส่งคืนคุณสมบัติของตัวเลขชนิดเดียวกับตัวแปร X ซึ่งอาจเป็นจริงและในบางกรณีจำนวนเต็ม

ซีเนียร์ No ฟังก์ชั่นและคำอธิบาย
1

DIGITS (X)

ส่งคืนจำนวนหลักสำคัญของแบบจำลอง

2

EPSILON (X)

จะส่งคืนจำนวนที่แทบจะเล็กน้อยเมื่อเทียบกับหนึ่ง กล่าวอีกนัยหนึ่งคือส่งคืนค่าที่น้อยที่สุดเช่น REAL (1.0, KIND (X)) + EPSILON (X) ไม่เท่ากับ REAL (1.0, KIND (X))

3

HUGE (X)

จะส่งกลับจำนวนมากที่สุดของแบบจำลอง

4

MAXEXPONENT (X)

จะส่งกลับเลขชี้กำลังสูงสุดของแบบจำลอง

5

MINEXPONENT (X)

จะส่งกลับเลขชี้กำลังขั้นต่ำของแบบจำลอง

6

PRECISION (X)

จะคืนค่าความแม่นยำทศนิยม

7

RADIX (X)

มันส่งคืนฐานของแบบจำลอง

8

RANGE (X)

ส่งกลับช่วงเลขชี้กำลังทศนิยม

9

TINY (X)

จะส่งคืนจำนวนบวกที่น้อยที่สุดของแบบจำลอง

ฟังก์ชันการจัดการจุดลอยตัว

ซีเนียร์ No ฟังก์ชั่นและคำอธิบาย
1

EXPONENT (X)

ส่งคืนส่วนเลขชี้กำลังของหมายเลขรุ่น

2

FRACTION (X)

ส่งคืนส่วนที่เป็นเศษส่วนของตัวเลข

3

NEAREST (X, S)

จะส่งคืนหมายเลขโปรเซสเซอร์ที่ใกล้เคียงที่สุดในทิศทางที่กำหนด

4

RRSPACING (X)

จะส่งกลับซึ่งกันและกันของระยะห่างสัมพัทธ์ของหมายเลขรุ่นใกล้กับหมายเลขที่กำหนด

5

SCALE (X, I)

มันคูณค่าจริงด้วยฐานเป็นเลขจำนวนเต็ม

6

SET_EXPONENT (X, I)

มันส่งคืนส่วนเลขชี้กำลังของตัวเลข

7

SPACING (X)

จะคืนค่าระยะห่างสัมบูรณ์ของหมายเลขรุ่นใกล้กับหมายเลขที่กำหนด

ฟังก์ชั่นการจัดการบิต

ซีเนียร์ No ฟังก์ชั่นและคำอธิบาย
1

BIT_SIZE (I)

ส่งคืนจำนวนบิตของโมเดล

2

BTEST (I, POS)

การทดสอบบิต

3

IAND (I, J)

ตรรกะ AND

4

IBCLR (I, POS)

ล้างบิต

5

IBITS (I, POS, LEN)

การสกัดบิต

6

IBSET (I, POS)

ตั้งค่าบิต

7

IEOR (I, J)

พิเศษหรือ

8

IOR (I, J)

รวมหรือ

9

ISHFT (I, SHIFT)

กะตรรกะ

10

ISHFTC (I, SHIFT [, SIZE])

กะวงกลม

11

NOT (I)

ส่วนประกอบทางตรรกะ

ฟังก์ชั่นตัวละคร

ซีเนียร์ No ฟังก์ชั่นและคำอธิบาย
1

ACHAR (I)

ส่งคืนอักขระ Ith ในลำดับการเรียง ASCII

2

ADJUSTL (STRING)

มันปรับสตริงด้านซ้ายโดยการลบช่องว่างที่นำหน้าและแทรกช่องว่างต่อท้าย

3

ADJUSTR (STRING)

มันปรับสตริงได้อย่างถูกต้องโดยการลบช่องว่างต่อท้ายและแทรกช่องว่างที่นำหน้า

4

CHAR (I [, KIND])

มันจะส่งคืนอักขระ Ith ในลำดับการเรียงข้อมูลจำเพาะของเครื่อง

5

IACHAR (C)

ส่งคืนตำแหน่งของอักขระในลำดับการเรียง ASCII

6

ICHAR (C)

จะส่งคืนตำแหน่งของอักขระในลำดับการเรียงข้อมูลจำเพาะของเครื่อง (โปรเซสเซอร์)

7

INDEX (STRING, SUBSTRING [, BACK])

จะส่งคืนตำแหน่งซ้ายสุด (ขวาสุดถ้า BACK คือ. TRUE.) ตำแหน่งเริ่มต้นของ SUBSTRING ภายใน STRING

8

LEN (STRING)

ส่งกลับความยาวของสตริง

9

LEN_TRIM (STRING)

ส่งกลับความยาวของสตริงโดยไม่ต้องต่อท้ายอักขระว่าง

10

LGE (STRING_A, STRING_B)

คำศัพท์ที่มากกว่าหรือเท่ากับ

11

LGT (STRING_A, STRING_B)

ค่าเฉลี่ยมากกว่า

12

LLE (STRING_A, STRING_B)

คำศัพท์น้อยกว่าหรือเท่ากับ

13

LLT (STRING_A, STRING_B)

น้อยกว่า

14

REPEAT (STRING, NCOPIES)

การเรียงต่อกันซ้ำ ๆ

15

SCAN (STRING, SET [, BACK])

จะคืนค่าดัชนีของตัวอักษรซ้ายสุด (ขวาสุดถ้า BACK เป็น. TRUE.) ของ STRING ที่เป็นของ SET หรือ 0 ถ้าไม่มีอยู่

16

TRIM (STRING)

ลบอักขระว่างต่อท้าย

17

VERIFY (STRING, SET [, BACK])

ตรวจสอบชุดของอักขระในสตริง

ชนิดฟังก์ชั่น

ซีเนียร์ No ฟังก์ชั่นและคำอธิบาย
1

KIND (X)

มันส่งกลับค่าพารามิเตอร์ชนิดชนิด

2

SELECTED_INT_KIND (R)

มันส่งคืนชนิดของพารามิเตอร์ type สำหรับช่วงเลขชี้กำลังที่ระบุ

3

SELECTED_REAL_KIND ([P, R])

ค่าพารามิเตอร์ประเภทชนิดจริงให้ความแม่นยำและช่วง

ฟังก์ชันลอจิก

ซีเนียร์ No ฟังก์ชั่นและคำอธิบาย
1

LOGICAL (L [, KIND])

แปลงระหว่างอ็อบเจ็กต์ประเภทตรรกะด้วยพารามิเตอร์ชนิดที่แตกต่างกัน