Чтение онлайн

ЖАНРЫ

Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:

// в мантиссе

static const bool is_signed = true;

static const bool is_integer = false;

static const bool is_exact = false;

static float min { return 1.17549435E–38F; } // пример

static float max { return 3.40282347E+38F; } // пример

static float epsilon { return 1.19209290E–07F; } // пример

static float round_error { return 0.5F; } // пример

static float infinity { return /*
какое-то значение */; }

static float quiet_NaN { return /* какое-то значение */; }

static float signaling_NaN { return /* какое-то значение */; }

static float denorm_min { return min; }

static const int min_exponent = –125; // пример

static const int min_exponent10 = –37; // пример

static const int max_exponent = +128; // пример

static const int max_exponent10 = +38; // пример

static const bool has_infinity = true;

static const bool has_quiet_NaN = true;

static const bool has_signaling_NaN = true;

static const float_denorm_style has_denorm = denorm_absent;

static const bool has_denorm_loss = false;

static const bool is_iec559 = true; // соответствует системе
IEC-559

static const bool is_bounded = true;

static const bool is_modulo = false;

static const bool traps = true;

static const bool tinyness_before = true;

static const float_round_style round_style =

round_to_nearest;

};

В заголовках

<limits.h>
и
<float.h>
определены макросы, определяющие основные свойства целых чисел и чисел с плавающей точкой.

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

В стандартной библиотеке определены основные математические функции (в заголовках

<cmath>
и
<complex>
).

Существуют версии этих функций, принимающие аргументы типа

float
,
double
,
long double
и
complex
. У каждой из этих функций тип возвращаемого значения совпадает с типом аргумента.

Если стандартная математическая функция не может выдать корректный с математической точки зрения результат, она устанавливает переменную

errno
.

Б.9.3. Комплексные числа

В стандартной библиотеке определены типы для комплексных чисел

complex<float>
,
complex<double>
и
complex<long double>
. Класс complex
<Scalar>
,
где
Scalar
— некий другой тип, поддерживающий обычные арифметические операции, как правило, работоспособен, но не гарантирует переносимости программ.

template<class Scalar> class complex {

// комплексное число — это пара скалярных значений,

// по существу — пара координат

Scalar re, im;

public:

complex(const Scalar & r, const Scalar & i):re(r), im(i) { }

complex(const Scalar & r):re(r),im(Scalar ) { }

complex:re(Scalar ), im(Scalar ) { }

Scalar real { return re; } // действительная часть

Scalar imag { return im; } // мнимая часть

// операторы : = += –= *= /=

};

Кроме этих членов, в классе

<complex>
предусмотрено много полезных операций.

Кроме того, к комплексным числам можно применять стандартные математические функции (см. раздел Б.9.2). Примечание: в классе

complex
нет операций
<
или
%
(см. также раздел 24.9).

Б.9.4. Класс valarray

Объект стандартного класса

valarray
— это одномерный массив чисел; иначе говоря, он предусматривает арифметические операции для массивов (аналогично классу
Matrix
из главы 24), а также срезы (slices) и шаги по индексу (strides).

Б.9.5. Обобщенные числовые алгоритмы

Эти алгоритмы из раздела

<numeric>
обеспечивают общие варианты типичных операций над последовательностями числовых значений.

Б.10. Функции стандартной библиотеки языка С

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

• Ввод-вывод в стиле языка C.

• Строки в стиле языка C.

• Управление памятью.

• Дата и время.

• Остальное.

Библиотека языка С содержит намного больше функций, чем описано в этой книге; рекомендуем читателям обратиться к хорошим учебникам по языку С, например, к книге Kernighan, Ritchie, The C Programming Language (K&R).

Б.10.1. Файлы

Система ввода-вывода, описанная в заголовке

<stdio>
, основана на файлах. Указатель на файл (
FILE*
) может относиться как к файлу, так и к стандартным потокам ввода и вывода,
stdin
,
stdout
и
stderr
. Стандартные потоки доступны по умолчанию; остальные файлы должны быть открыты явным образом.

Поделиться с друзьями: