Ответ 1
math.h сначала появляется в 7-м Исследовательском Unix. Трудно сказать, как это произошло. Например, [1] утверждает, что биты библиотеки C были объединены из "PWB/Unix", которая включала troff
и компилятор C pcc
, но я не могу это доказать.
Еще одна интересная информация - это руководство по библиотеке от V7 Unix: intro.3:
(3) These functions, together with those of section 2 and those marked (3S), constitute library libc, which is automatically loaded by the C compiler cc(1) and the Fortran compiler f77(1). The link editor ld(1) searches this library under the `-lc' option. Declarations for some of these functions may be obtained from include files indicated on the appropri- ate pages.
<... >
(3M) These functions constitute the math library, libm. They are automati- cally loaded as needed by the Fortran compiler f77(1). The link editor searches this library under the `-lm' option. Declarations for these functions may be obtained from the include file <math.h>.
Если вы посмотрите на make файлы команд V7, только несколько программ на C связаны с флагом -lm
. Поэтому мой вывод является умозрительным:
-
libm.a
(иmath.h
) в первую очередь был необходим для программ FORTRAN в основном, поэтому он был разделен на библиотеку для уменьшения двоичного следа (обратите внимание, что он был связан статически). - Не многие машины имели поддержку с плавающей запятой. Например, вам нужно будет купить опциональную FPP для PDP-11 [2], в Unix также есть библиотека моделирования libfpsim, чтобы уменьшить ее, поэтому с плавающей точкой вряд ли можно использовать в ранних программах на C.