Комментарии:
Аргументами данной функции могут быть атомы и ряды. Если аргументы являются рядами, применяются правила операций на рядах.
Аргументы должны быть представлены как 32-битные числа, со знаком или без знака.
Если вы намерены манипулировать полными 32-битными величинами, вы должны объявить переменные как atom, но не как integer. В Euphoria тип integer ограничен 31-битом.
Результат трактуется как число со знаком. Оно будет отрицательным, когда старший бит является 1.
Для лучшего понимания двоичного представления числа вы можете вызвать его на отображение в шестнадцатеричной записи. Используйте для этого команду printf() с форматом %x.
Пример 1:
a = and_bits(#0F0F0000, #12345678)
-- a равно #02040000
Пример 2:
a = and_bits(#FF, {#123456, #876543, #2211})
-- a равно {#56, #43, #11}
Пример 3:
a = and_bits(#FFFFFFFF, #FFFFFFFF)
-- a равно -1
-- заметьте, что #FFFFFFFF является положительным числом,
-- но результат побитовой логической операции трактуется
-- как 32-битное число со знаком, так что он отрицателен.
См. также:
or_bits, xor_bits, not_bits, int_to_bits
append
Синтаксис:
s2 = append(s1, x)
Описание:
Создаёт на базе s1 новый ряд, с x, добавленным в конец ряда s1 в качестве последнего элемента ряда s2. Длина ряда s2 будет равна length(s1) + 1, то есть, на один элемент больше длины исходного ряда s1.
Комментарии:
Если x является атомом, операция эквивалентна s2 = s1 & xЕсли x является рядом, - не эквивалентна.
Необходимая дополнительная память выделяется автоматически и очень эффективно, благодаря динамическому распределению памяти, работающему в Euphoria. Случай, когда s1 и s2 в действительности являются одним и тем же рядом (как в Примере 1 ниже), особенно оптимален.
Пример 1:
Вы можете применить append() для динамического удлинения ряда, т.е.
sequence x
x = {}
for i = 1 to 10 do
x = append(x, i)
end for
-- x теперь равен {1,2,3,4,5,6,7,8,9,10}
Пример 2:
Любой объект Euphoria может быть добавлен к ряду, т.е.
sequence x, y, z
x = {"fred", "barney"}
y = append(x, "wilma")
-- y теперь равен {"fred", "barney", "wilma"}
z = append(append(y, "betty"), {"bam", "bam"})
-- z теперь равен {"fred", "barney", "wilma", "betty", {"bam", "bam"}}
См. также:
prepend, оператор сцепления &, оператор формирования ряда
arccos
Синтаксис:
include misc.e
x2 = arccos(x1)
Описание:
Выдаёт угол, косинус которого равен x1.
Комментарии:
Аргумент, x1, должен быть в пределах от -1 до +1 включительно.
Результат, выраженный в радианах, будет находиться между 0 и PI.
Данная функция может быть применена к атому или ко всем элементам ряда.
Функция arccos() вычисляется не так быстро, как arctan().
Пример:
s = arccos({-1,0,1})
-- s равно {3.141592654, 1.570796327, 0}
См. также:
cos, arcsin, arctan
arcsin
Синтаксис:
include misc.e
x2 = arcsin(x1)
Описание:
Выдаёт угол, синус которого равен x1.
Комментарии:
Аргумент, x1, должен быть в пределах от -1 до +1 включительно.
Результат, выраженный в радианах, будет находиться между -PI/2 и +PI/2.
Данная функция может быть применена к атому или ко всем элементам ряда.
Функция arcsin() вычисляется не так быстро, как arctan().
Пример:
s = arcsin({-1,0,1})
-- s равно {-1.570796327, 0, 1.570796327}
См. также:
sin, arccos, arctan
arctan
Синтаксис:
x2 = arctan(x1)
Описание:
Выдаёт угол, тангенс которого равен x1.
Комментарии:
Результат, выраженный в радианах, будет между -PI/2 и PI/2.
Данная функция может быть применена к атому или ко всем элементам ряда.
Функция arctan() вычисляется быстрее, чем arcsin() или arccos().
Пример:
s = arctan({1,2,3})
-- s равно {0.785398, 1.10715, 1.24905}
См. также:
tan, arcsin, arccos
atom
Синтаксис:
i = atom(x)
Описание:
Выдаёт 1, если x является атомом, иначе выдаёт 0.
Комментарии:
Данная команда, в основном, служит для объявления переменных типа atom. Но вы можете также применять её подобно вызову функции, чтобы определить, не является ли объект атомом.
Пример 1:
atom a
a = 5.99
Пример 2:
object line
line = gets(0)
if atom(line) then
puts(SCREEN, "конец файла\n")
end if
См. также:
sequence, object, integer, атомы и ряды
atom_to_float32
Синтаксис:
include machine.e
s = atom_to_float32(a1)
Описание:
Преобразует атом Euphoria в ряд из 4-х однобайтовых величин. Эти 4 байта содержат представление числа с плавающей точкой в 32-х битном формате по стандарту IEEE.
Комментарии:
Атомы Euphoria могут иметь величины, соответствующие 64-битным числам с плавающей точкой стандарта IEEE, так что вы можете потерять точность при преобразовании их к 32-битным числам (16 значащих цифр против 7). Диапазон показателей экспонент также намного шире для 64-битных чисел, чем в 32-битном формате (308 против 38), поэтому некоторые атомы могут оказаться слишком большими или слишком маленькими для представления их в 32-битном формате. В этом случае вы получите одну из специальных 32-битных величин: inf или -inf (бесконечность или -бесконечность). Чтобы избежать этих ограничений, вы можете применить atom_to_float64().
Читать дальше