อ่าน 4 นาที
ฟังก์ชันทางคณิตศาสตร์ C
การดำเนินการทางคณิตศาสตร์ของภาษา Cคือกลุ่มของฟังก์ชันในไลบรารีมาตรฐานของภาษาการเขียนโปรแกรม C ที่ใช้ฟังก์ชันทางคณิตศาสตร์พื้นฐาน มาตรฐาน C ที่แตกต่างกันมีชุดฟังก์ชันที่แตกต่างกัน
ฟังก์ชันทางคณิตศาสตร์ C
| ไลบรารีมาตรฐาน C (libc) |
|---|
| หัวข้อทั่วไป |
| ส่วนหัวเบ็ดเตล็ด |
การดำเนินการทางคณิตศาสตร์ของภาษา Cคือกลุ่มของฟังก์ชันในไลบรารีมาตรฐานของภาษาการเขียนโปรแกรม C ที่ใช้ฟังก์ชันทางคณิตศาสตร์พื้นฐาน[ 1 ] [ 2 ]มาตรฐาน C ที่แตกต่างกันมีชุดฟังก์ชันที่แตกต่างกัน แม้ว่าจะเข้ากันได้กับเวอร์ชันก่อนหน้าก็ตาม ฟังก์ชันส่วนใหญ่เหล่านี้ยังมีอยู่ในไลบรารีมาตรฐาน C++ ด้วย เช่นกัน แม้ว่าจะอยู่ในส่วนหัวที่แตกต่างกัน (ส่วนหัวของ C ก็รวมอยู่ด้วย แต่เป็นเพียงคุณสมบัติความเข้ากันได้ที่เลิกใช้แล้ว)
ภาพรวมของฟังก์ชันต่างๆ
ฟังก์ชันทางคณิตศาสตร์ส่วนใหญ่ที่ใช้ตัวเลขทศนิยมจะถูกกำหนดไว้ใน ไฟล์เฮดเดอร์ <math.h>` <cmath>.php` (ใน C++) ส่วนฟังก์ชันที่ทำงานกับจำนวนเต็มเช่นabs`flow`, labs` divflow`, `flow` และ `flow` จะถูกกำหนดไว้ใน ไฟล์เฮดเดอร์ `.php` ( ใน C++) ldivแทน<stdlib.h><cstdlib>
ฟังก์ชันใดๆ ที่ดำเนินการกับมุมจะใช้เรเดียนเป็นหน่วยของมุม[ 1 ]
ฟังก์ชันเหล่านี้บางส่วนไม่มีอยู่ใน มาตรฐานเวอร์ชัน C89สำหรับฟังก์ชันที่มีอยู่ ฟังก์ชันจะรับเฉพาะประเภทdoubleสำหรับอาร์กิวเมนต์จุดลอยตัว ซึ่งนำไปสู่การแปลงประเภทที่มีค่าใช้จ่ายสูงในโค้ดที่ใช้floatค่าความแม่นยำเดี่ยว ใน C99 ข้อบกพร่องนี้ได้รับการแก้ไขโดยการแนะนำชุดฟังก์ชันใหม่ที่ทำงานกับอาร์กิวเมนต์floatและlong doubleฟังก์ชันเหล่านั้นระบุโดย คำต่อท้าย fและlตามลำดับ[ 3 ]
| การทำงาน | คำอธิบาย | |
|---|---|---|
abslabsllabs | คำนวณค่าสัมบูรณ์ของจำนวนเต็ม | |
fabs | คำนวณค่าสัมบูรณ์ของค่าทศนิยม | |
divldivlldiv | คำนวณผลหารและเศษเหลือของการหารจำนวนเต็ม | |
fmod | ส่วนที่เหลือของการดำเนินการหารเลขทศนิยม | |
remainder | ลงนามในส่วนที่เหลือของการดำเนินงานของแผนก | |
remquo | ลงนามส่วนที่เหลือ รวมถึงสามส่วนสุดท้ายของการดำเนินการแบ่งส่วน | |
fma | การดำเนินการ คูณและบวกแบบหลอมรวม | |
fmax | ค่าที่มากกว่าระหว่างค่าทศนิยมสองค่า | |
fmin | ค่าที่น้อยกว่าของค่าทศนิยมสองค่า | |
fdim | ผลต่างบวกของค่าทศนิยมสองค่า | |
nannanfnanl | ส่งคืนค่าNaN (ไม่ใช่ตัวเลข) | |
| ฟังก์ชัน เลขชี้กำลัง | exp | ส่งคืนค่า eยกกำลังที่กำหนด |
exp2 | ส่งคืนค่า 2 ยกกำลังที่กำหนด | |
expm1 | ส่งคืนค่า e ยกกำลังที่กำหนด ลบหนึ่ง | |
log | คำนวณลอการิทึมธรรมชาติ (ฐาน e) | |
log2 | คำนวณลอการิทึมฐานสอง (ฐาน 2) | |
log10 | คำนวณลอการิทึมฐานสิบ (ฐาน 10) | |
log1p | คำนวณลอการิทึมธรรมชาติ (ฐาน e) ของ 1 บวกกับจำนวนที่กำหนดให้ | |
ilogb | ดึงเลขชี้กำลังของจำนวน | |
logb | ดึงเลขชี้กำลังของจำนวน | |
| ฟังก์ชัน พลังงาน | sqrt | คำนวณรากที่สอง |
cbrt | คำนวณรากที่สาม | |
hypot | คำนวณรากที่สองของผลรวมของกำลังสองของจำนวนสองจำนวนที่กำหนดให้ | |
pow | ยกกำลังจำนวนที่กำหนด[ 4 ] | |
| ฟังก์ชัน ตรีโกณมิติ | sin | คำนวณค่าไซน์ |
cos | คำนวณค่าโคไซน์ | |
tan | คำนวณแทนเจนต์ | |
asin | คำนวณค่าอาร์คไซน์ | |
acos | คำนวณค่าอาร์คโคไซน์ | |
atan | คำนวณค่าอาร์คแทนเจนต์ | |
atan2 | คำนวณค่าอาร์คแทนเจนต์ โดยใช้เครื่องหมายเพื่อกำหนดควอดแรนต์ | |
| ฟังก์ชัน ไฮเปอร์โบลิก | sinh | คำนวณค่าไซน์ไฮเปอร์โบลิก |
cosh | คำนวณค่าโคไซน์ไฮเปอร์โบลิก | |
tanh | คำนวณค่าแทนเจนต์ไฮเปอร์โบลิก | |
asinh | คำนวณค่าไซน์ส่วนโค้งไฮเปอร์โบลิก | |
acosh | คำนวณค่าโคไซน์ส่วนโค้งไฮเปอร์โบลิก | |
atanh | คำนวณค่าอาร์คแทนเจนต์ไฮเปอร์โบลิก | |
| ฟังก์ชันข้อ ผิดพลาดและแกมมา | erf | คำนวณฟังก์ชันข้อผิดพลาด |
erfc | คำนวณฟังก์ชันข้อผิดพลาดเสริม | |
lgamma | คำนวณค่าลอการิทึมธรรมชาติของค่าสัมบูรณ์ของฟังก์ชันแกมมา | |
tgamma | คำนวณฟังก์ชันแกมมา | |
| การดำเนินการ จุดลอยตัวจำนวนเต็มที่ใกล้ที่สุด | ceil | ส่งคืนค่าจำนวนเต็มที่ใกล้เคียงที่สุดซึ่งไม่น้อยกว่าค่าที่กำหนด |
floor | ส่งคืนค่าจำนวนเต็มที่ใกล้เคียงที่สุดซึ่งไม่มากกว่าค่าที่กำหนด | |
trunc | ส่งคืนจำนวนเต็มที่ใกล้เคียงที่สุดซึ่งมีขนาดไม่มากกว่าค่าที่กำหนด | |
roundlroundllround | ส่งคืนค่าจำนวนเต็มที่ใกล้เคียงที่สุด โดยปัดเศษออกจากศูนย์ในกรณีที่ค่าอยู่กึ่งกลาง | |
nearbyint | ส่งคืนค่าจำนวนเต็มที่ใกล้เคียงที่สุดโดยใช้โหมดการปัดเศษปัจจุบัน | |
rintlrintllrint | ส่งคืนค่าจำนวนเต็มที่ใกล้เคียงที่สุดโดยใช้โหมดการปัดเศษปัจจุบัน ยกเว้นกรณีที่ผลลัพธ์แตกต่างกัน | |
| ฟังก์ชัน การจัดการจุดลอยตัว | frexp | แยกตัวเลขออกเป็นส่วนสำคัญและเลขยกกำลังของ 2 |
ldexp | คูณจำนวนหนึ่งด้วย 2 ยกกำลัง | |
modf | แยกตัวเลขออกเป็นส่วนจำนวนเต็มและส่วนทศนิยม | |
scalbnscalbln | คูณตัวเลขด้วย FLT_RADIX ยกกำลัง | |
nextafternexttoward | ส่งคืนค่าทศนิยมที่สามารถแสดงได้ถัดไปที่ใกล้เคียงกับค่าที่กำหนด | |
copysign | คัดลอกเครื่องหมายของค่าทศนิยม | |
| การจำแนกประเภท | fpclassify | จัดประเภทค่าทศนิยมที่กำหนด |
isfinite | ตรวจสอบว่าอาร์กิวเมนต์มีค่าจำกัดหรือไม่ | |
isinf | ตรวจสอบว่าอาร์กิวเมนต์เป็นอนันต์หรือไม่ | |
isnan | ตรวจสอบว่าค่าอาร์กิวเมนต์เป็น NaN หรือไม่ | |
isnormal | ตรวจสอบว่าอาร์กิวเมนต์เป็นปกติหรือไม่ | |
signbit | ตรวจสอบว่าเครื่องหมายของอาร์กิวเมนต์เป็นลบหรือไม่ |
สภาพแวดล้อมจุดลอยตัว
C99เพิ่มฟังก์ชันและประเภทต่างๆ หลายอย่างสำหรับการควบคุมสภาพแวดล้อมจุดลอยตัวแบบละเอียด[ 3 ]ฟังก์ชันเหล่านี้สามารถใช้เพื่อควบคุมการตั้งค่าต่างๆ ที่ส่งผลต่อการคำนวณจุดลอยตัว เช่น โหมดการปัดเศษ เงื่อนไขที่ทำให้เกิดข้อยกเว้น เมื่อตัวเลขถูกล้างเป็นศูนย์ เป็นต้น ฟังก์ชันและประเภทสภาพแวดล้อมจุดลอยตัวถูกกำหนดไว้ใน<fenv.h>ส่วนหัว ( <cfenv>ในC++ )
| การทำงาน | คำอธิบาย |
|---|---|
feclearexcept | ล้างข้อยกเว้น ( C99 ) |
fegetenv | จัดเก็บสภาพแวดล้อมจุดลอยตัวปัจจุบัน ( C99 ) |
fegetexceptflag | จัดเก็บแฟล็กสถานะปัจจุบัน ( C99 ) |
fegetround | ดึงทิศทางการปัดเศษปัจจุบัน ( C99 ) |
feholdexcept | บันทึกสภาพแวดล้อมจุดลอยตัวปัจจุบันและล้างข้อยกเว้นทั้งหมด ( C99 ) |
feraiseexcept | ทำให้เกิดข้อผิดพลาดเกี่ยวกับเลขทศนิยม ( C99 ) |
fesetenv | ตั้งค่าสภาพแวดล้อมจุดลอยตัวปัจจุบัน ( C99 ) |
fesetexceptflag | ตั้งค่าสถานะปัจจุบัน ( C99 ) |
fesetround | กำหนดทิศทางการปัดเศษปัจจุบัน ( C99 ) |
fetestexcept | ทดสอบว่ามีการยกข้อยกเว้นบางประการหรือไม่ ( C99 ) |
feupdateenv | คืนค่าสภาพแวดล้อมจุดลอยตัว แต่ยังคงข้อยกเว้นปัจจุบันไว้ ( C99 ) |
จำนวนเชิงซ้อน
C99เพิ่ม_Complexคีย์เวิร์ดใหม่ (และcomplexมาโครอำนวยความสะดวก ซึ่งใช้ได้เฉพาะเมื่อ<complex.h>มีการรวมเฮดเดอร์ไว้เท่านั้น) ที่ให้การสนับสนุนจำนวนเชิงซ้อน ชนิดข้อมูลจุดลอยตัวใดๆ ก็สามารถแก้ไขได้ด้วย `completion` complexและจะถูกกำหนดเป็นคู่ของจำนวนจุดลอยตัว โปรดทราบว่า C99 และ C++ ไม่ได้ใช้งานจำนวนเชิงซ้อนในลักษณะที่เข้ากันได้ในโค้ด – C++ จะใช้คลาส `completion` แทน std::complex
การดำเนินการทั้งหมดบนจำนวนเชิงซ้อนถูกกำหนดไว้ใน<complex.h>ส่วนหัว เช่นเดียวกับฟังก์ชันค่าจริง คำต่อท้าย " fหรือl" จะแสดงถึง รูปแบบ " float complexหรือlong double complex" ของฟังก์ชันนั้น
| การทำงาน | คำอธิบาย | |
|---|---|---|
| การดำเนินงาน ขั้นพื้นฐาน | cabs | คำนวณค่าสัมบูรณ์ ( C99 ) |
carg | คำนวณค่าอาร์กิวเมนต์ของจำนวนเชิงซ้อน ( C99 ) | |
cimag | คำนวณส่วนจินตภาพของจำนวนเชิงซ้อน ( C99 ) | |
creal | คำนวณส่วนจริงของจำนวนเชิงซ้อน ( C99 ) | |
conj | คำนวณคอนจูเกตเชิงซ้อน ( C99 ) | |
cproj | คำนวณการฉายภาพเชิงซ้อนลงบนทรงกลมรีมันน์ ( C99 ) | |
| การดำเนินการ ยกกำลัง | cexp | คำนวณเลขชี้กำลัง เชิงซ้อน ( C99 ) |
clog | คำนวณลอการิทึม เชิงซ้อน ( C99 ) | |
csqrt | คำนวณรากที่สอง เชิงซ้อน ( C99 ) | |
cpow | คำนวณกำลัง เชิงซ้อน ( C99 ) | |
| การดำเนินการ ตรีโกณมิติ | csin | คำนวณไซน์ เชิงซ้อน ( C99 ) |
ccos | คำนวณค่า โคไซน์เชิงซ้อน( C99 ) | |
ctan | คำนวณแทนเจนต์ เชิงซ้อน ( C99 ) | |
casin | คำนวณค่า ไซน์ส่วนโค้งเชิงซ้อน( C99 ) | |
cacos | คำนวณค่า โคไซน์ส่วนโค้งเชิงซ้อน( C99 ) | |
catan | คำนวณค่า อาร์คแทนเจนต์เชิงซ้อน( C99 ) | |
| การดำเนินการ ไฮเปอร์โบลิก | csinh | คำนวณไซน์ไฮเปอร์โบลิก เชิงซ้อน ( C99 ) |
ccosh | คำนวณโคไซน์ไฮเปอร์โบลิก เชิงซ้อน ( C99 ) | |
ctanh | คำนวณแทนเจนต์ไฮเปอร์โบลิก เชิงซ้อน ( C99 ) | |
casinh | คำนวณไซน์ส่วนโค้งไฮเปอร์โบลิก เชิงซ้อน ( C99 ) | |
cacosh | คำนวณค่าโคไซน์ส่วนโค้งไฮเปอร์โบลิก เชิงซ้อน ( C99 ) | |
catanh | คำนวณค่า อาร์ คแทนเจนต์ไฮเปอร์โบลิก เชิงซ้อน ( C99 ) |
ฟังก์ชันที่ซับซ้อนกว่าบางส่วน "สงวนไว้สำหรับการใช้งานในอนาคตใน C99" [ 5 ]การใช้งานนั้นจัดทำโดยโครงการโอเพนซอร์สที่ไม่ได้เป็นส่วนหนึ่งของไลบรารีมาตรฐาน
| การทำงาน | คำอธิบาย | |
|---|---|---|
| ฟังก์ชันข้อผิดพลาด | cerf | คำนวณฟังก์ชันข้อผิดพลาด เชิงซ้อน ( C99 ) |
cerfc | คำนวณ ฟังก์ชันข้อผิดพลาดเสริมเชิงซ้อน( C99 ) |
ฟังก์ชันทั่วไปของประเภท
ส่วนหัวของไฟล์<tgmath.h>กำหนดมาโครแบบทั่วไปสำหรับฟังก์ชันทางคณิตศาสตร์แต่ละฟังก์ชันที่กำหนดไว้ในไฟล์<math.h>และ<complex.h>ไฟล์ ซึ่งจะเพิ่มการสนับสนุนแบบจำกัดสำหรับการโอเวอร์โหลดฟังก์ชันทางคณิตศาสตร์: สามารถใช้ชื่อฟังก์ชันเดียวกันกับพารามิเตอร์ประเภทต่างๆ ได้ โดยฟังก์ชันจริงจะถูกเลือกในระหว่างการคอมไพล์ตามประเภทของพารามิเตอร์
มาโครแบบเจเนริกแต่ละตัวที่สอดคล้องกับฟังก์ชันที่กำหนดไว้สำหรับทั้งจำนวนจริงและจำนวนเชิงซ้อน จะรวบรวมฟังก์ชันที่แตกต่างกันทั้งหมด 6 ฟังก์ชัน ได้แก่float, doubleและlong doubleและcomplexรูปแบบต่างๆ ของฟังก์ชันเหล่านั้น ส่วนมาโครแบบเจเนริกที่สอดคล้องกับฟังก์ชันที่กำหนดไว้สำหรับจำนวนจริงเท่านั้น จะรวบรวมฟังก์ชันที่แตกต่างกันทั้งหมด 3 ฟังก์ชัน ได้แก่float, doubleและlong doubleรูปแบบต่างๆ ของฟังก์ชันนั้น
ภาษา C++ มีการรองรับการโอเวอร์โหลดฟังก์ชันโดยธรรมชาติอยู่แล้ว ดังนั้นจึงไม่จำเป็นต้องมี<tgmath.h>ไฟล์เฮดเดอร์เพิ่มเติม แม้แต่เพื่อเป็นคุณสมบัติความเข้ากันได้ก็ตาม
การสร้างเลขสุ่ม
ส่วนหัว<stdlib.h>( <cstdlib>ใน C++) กำหนดฟังก์ชันหลายอย่างที่สามารถใช้สำหรับการสร้างตัวเลขสุ่มทางสถิติได้[ 6 ]
| การทำงาน | คำอธิบาย |
|---|---|
rand | สร้างตัวเลขสุ่มเทียมระหว่าง 0 ถึง 0 (รวมทั้ง 0 และRAND_MAX0 ด้วย) |
srand | เริ่มต้นตัวสร้างเลขสุ่มเทียม |
arc4random | สร้างเลขสุ่มเทียมระหว่าง 0 ถึงUINT32_MAXn โดยปกติจะใช้อัลกอริทึมที่ดีกว่าrand |
arc4random_uniform | สร้างตัวเลขสุ่มเทียมระหว่าง 0 ถึงค่าสูงสุด |
arc4random_buf | เติมบัฟเฟอร์ด้วยบิตสตรีมแบบสุ่มเทียม |
arc4random_stir | เริ่มต้นใช้งาน ตัวสร้างเลขสุ่มเทียม |
ตระกูลarc4randomของฟังก์ชันเลขสุ่มไม่ได้ถูกกำหนดไว้ในมาตรฐาน POSIX แต่พบได้ในlibcการใช้งานทั่วไปบางอย่าง เดิมทีคำนี้หมายถึงตัวสร้างคีย์สตรีมของเวอร์ชันที่รั่วไหลของรหัสRC4 (จึงเป็นที่มาของคำว่า " RC4 ที่ถูกกล่าวหา") แต่หลังจากนั้นได้มีการนำอัลกอริธึมอื่น ๆ ซึ่งโดยปกติมาจากรหัสอื่น ๆ เช่นChaCha20มาใช้แทน โดยใช้ชื่อเดียวกัน
คุณภาพของการสุ่มจากrandมักจะอ่อนเกินไปจนไม่อาจถือได้ว่าเป็นการสุ่มทางสถิติ และจำเป็นต้องมีการกำหนดค่าเริ่มต้นอย่างชัดเจน โดยทั่วไปแล้วแนะนำให้ใช้arc4randomแทนเมื่อrandเป็นไปได้ ไลบรารี C บางตัวใช้การสุ่มแบบนี้randภายในarc4random_uniformอยู่แล้ว
ฟังก์ชันพิเศษ
ตั้งแต่C++17 เป็นต้นไป C++ ได้นำฟังก์ชันพิเศษ มาใส่ ไว้ในไฟล์<cmath>เฮดเดอร์
| การทำงาน | คำอธิบาย |
|---|---|
assoc_laguerre | คำนวณพหุนาม Laguerre ที่เกี่ยวข้อง |
assoc_legendre | คำนวณพหุนามเลอจองเดอร์ที่เกี่ยวข้อง |
beta | คำนวณฟังก์ชันเบต้า |
comp_ellint_1 | คำนวณอินทิกรัลเชิงวงรีสมบูรณ์ชนิดแรก |
comp_ellint_2 | คำนวณอินทิกรัลเชิงวงรีสมบูรณ์ชนิดที่สอง |
comp_ellint_3 | คำนวณอินทิกรัลเชิงวงรีสมบูรณ์ชนิดที่สาม |
cyl_bessel_i | คำนวณฟังก์ชันเบสเซลทรงกระบอกดัดแปลงปกติ |
cyl_bessel_j | คำนวณฟังก์ชันเบสเซลทรงกระบอกชนิดแรก |
cyl_bessel_k | คำนวณฟังก์ชันเบสเซลทรงกระบอกดัดแปลงที่ไม่สม่ำเสมอ |
cyl_neumann | คำนวณ ฟังก์ชัน Neumann ทรงกระบอก |
ellint_1 | คำนวณอินทิกรัลเชิงวงรีไม่สมบูรณ์ชนิดแรก |
ellint_2 | คำนวณอินทิกรัลเชิงวงรีไม่สมบูรณ์ชนิดที่สอง |
ellint_3 | คำนวณอินทิกรัลเชิงวงรีไม่สมบูรณ์ชนิดที่สาม |
expint | คำนวณอินทิกรัลเลขชี้กำลัง |
hermite | คำนวณพหุนามเฮอร์ไมต์ |
legendre | คำนวณพหุนามเลอจองเดอร์ |
laguerre | คำนวณพหุนามลากูร์ |
riemann_zeta | คำนวณฟังก์ชันซีตาของรีมันน์ |
sph_bessel | คำนวณฟังก์ชันเบสเซลทรงกลมชนิดแรก |
sph_legendre | คำนวณฟังก์ชันเลอจองเดอร์ที่เกี่ยวข้องทรงกลม |
sph_neumann | คำนวณฟังก์ชันนอยมันน์ทรงกลม |
การนำไปใช้
ภายใต้ระบบPOSIX เช่น LinuxและBSDฟังก์ชันทางคณิตศาสตร์ (ตามที่ประกาศไว้ในไฟล์ `.json` <math.h>) จะถูกรวมไว้แยกต่างหากในไลบรารีทางคณิตศาสตร์ดังนั้น หากมีการใช้ฟังก์ชันเหล่านั้น ลิงเกอร์จะต้องได้รับคำสั่ง `linker` มีการใช้งานหลายรูปแบบ รวมถึง: libm-lmlibm
- libmของGNU libc
- ไลบรารี libmของAMD บนGitHubถูกนำมาใช้ใน Windows เกือบจะเหมือนเดิมทุกประการ
- ไลบรารีคอมไพเลอร์ Intel C++
- libmของRed Hat (Newlib)
- FDLIBMของSunซึ่งถูกใช้เป็นพื้นฐานสำหรับmsunของFreeBSDและlibmของOpenBSDซึ่งทั้งสองอย่างนี้ก็เป็นพื้นฐานของOpenLibmของJulia อีกทีหนึ่ง
- ไลบรารี libmของmuslสร้างขึ้นบนพื้นฐานของ BSD
libmsและโครงการอื่นๆ เช่น Arm - ไลบรารี libm ของLLVM ซึ่งปัดเศษอย่างถูกต้อง (กล่าวคือ ข้อผิดพลาดจากผลลัพธ์ที่ถูกต้องทางคณิตศาสตร์จะต่ำกว่า 0.5 หน่วยในตำแหน่งสุดท้าย ) [ 7 ]
- CRlibm (correctly rounded libm) ซึ่งเป็นโครงการของ Arénaire และMetaLibm ซึ่งเป็นรุ่นต่อจาก CRlibm นั้น ใช้ขั้นตอนวิธี Remezในการสร้างค่าประมาณโดยอัตโนมัติซึ่งได้รับการพิสูจน์อย่างเป็นทางการแล้ว
- RLIBM ของ Rutger ซึ่งให้ฟังก์ชันปัดเศษที่ถูกต้องในความแม่นยำเดี่ยว[ 8 ]
ตัวอย่างการใช้งานที่ไม่จำเป็นต้องใช้ชื่อเฉพาะlibmได้แก่:
- รูทีนทางคณิตศาสตร์ที่ปรับแต่งแล้วของARM
- GCE-Math คือเวอร์ชันของฟังก์ชันทางคณิตศาสตร์ของ C/C++ ที่เขียนขึ้นสำหรับ C++
constexpr(การคำนวณในขั้นตอนการคอมไพล์) - CORE-MATHปัดเศษอย่างถูกต้องสำหรับความแม่นยำเดี่ยวและคู่
- ไลบรารีคณิตศาสตร์ SIMD (เวกเตอร์) ประกอบด้วยSLEEF , Yeppp! เก็บถาวรเมื่อวันที่ 14 กรกฎาคม 2020 ที่Wayback Machineและ VCL ของ Agner Fogรวมถึงไลบรารีแบบปิดแหล่งที่มาอีกจำนวนหนึ่ง เช่น SVML และ DirectXMath [ 9 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- : การประกาศทางคณิตศาสตร์ – เอกสารอ้างอิงคำจำกัดความพื้นฐาน, ข้อกำหนด UNIX เดียว , เวอร์ชัน 5 จากThe Open Group
- เอกสารอ้างอิงภาษาซีสำหรับฟังก์ชันทางคณิตศาสตร์
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ฟังก์ชันทางคณิตศาสตร์ C
การดำเนินการทางคณิตศาสตร์ของภาษา Cคือกลุ่มของฟังก์ชันในไลบรารีมาตรฐานของภาษาการเขียนโปรแกรม C ที่ใช้ฟังก์ชันทางคณิตศาสตร์พื้นฐาน มาตรฐาน C ที่แตกต่างกันมีชุดฟังก์ชันที่แตกต่างกัน
ภาพรวมของฟังก์ชันต่างๆ
ฟังก์ชันทางคณิตศาสตร์ส่วนใหญ่ที่ใช้ ตัวเลขทศนิยม จะถูกกำหนดไว้ใน ไฟล์เฮดเดอร์ ` .php` (ใน C++) ส่วนฟังก์ชันที่ทำงานกับ จำนวนเต็ม เช่น abs `flow`, labs ` div flow`, `flow` และ `flow` จะถูกกำหนดไว้ใน ไฟล์เฮดเดอร์ `.php` ( ใน C++) ldiv แทน
สภาพแวดล้อมจุดลอยตัว
C99 เพิ่มฟังก์ชันและประเภทต่างๆ หลายอย่างสำหรับการควบคุมสภาพแวดล้อมจุดลอยตัวแบบละเอียด [ 3 ] ฟังก์ชันเหล่านี้สามารถใช้เพื่อควบคุมการตั้งค่าต่างๆ ที่ส่งผลต่อการคำนวณจุดลอยตัว เช่น โหมดการปัดเศษ เงื่อนไขที่ทำให้เกิดข้อยกเว้น เมื่อตัวเลขถูกล้างเป็นศูนย์ เป็นต้น...
จำนวนเชิงซ้อน
C99 เพิ่ม _Complex คีย์เวิร์ดใหม่ (และ complex มาโครอำนวยความสะดวก ซึ่งใช้ได้เฉพาะเมื่อ มีการรวมเฮดเดอร์ไว้เท่านั้น) ที่ให้การสนับสนุนจำนวนเชิงซ้อน ชนิดข้อมูลจุดลอยตัวใดๆ ก็สามารถแก้ไขได้ด้วย `completion` complex และจะถูกกำหนดเป็นคู่ของจำนวนจุดลอยตัว...