2016-03-11 2 views
1

Я хотел бы найти точную реализацию оператора модуля (%) на double в java. Вы знаете, где я могу его найти? (Извините, если это очевидные знания)Где я могу найти реализацию оператора modulo в java?

+0

О OpenJDK, использование - XX: + PrintAssembly для просмотра сгенерированного кода (требуется некоторая настройка - его поиск). (На архитектурах с собственным остатком с плавающей запятой он должен просто использовать эту инструкцию; на архитектурах, где с плавающей запятой предоставляется программное обеспечение, это, вероятно, вызов ловушки или библиотеки.) –

+0

Если вы просто хотите узнать точные сведения о том, как оператор работает, [Java Language Specification, раздел 15.17.3] (http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.17.3) объясняет это. – VGR

ответ

2

Точная реализация языковых функций находится в JVM. Вероятно, это будет зависеть от архитектуры ЦП, для которой разработана и скомпилирована конкретная версия JVM.

1

Вышеуказанный ответ не является ответом, к сожалению. Я пытался выяснить то же самое, и вот что я нашел для OpenJDK:

Есть также некоторые модуль/o операции в различных классах безопасности.

Согласно Java 8 StrictMath docs,

Математическая библиотека Java определяется относительно fdlibm версии 5.3. Где fdlibm предоставляет более одного определения для функции (например, acos), используйте версию «Основная функция IEEE 754» (находящаяся в файле , имя которого начинается с буквы e). Методами, требующими семантики fdlibm , являются sin, cos, tan, asin, acos, atan, exp, log, log10, cbrt, atan2, pow, sinh, cosh, tanh, hypot, expm1 и log1p.

Есть два эталонных реализаций fdlibm 5.3 в JDK:

  • s_modf.c (с помощью бита вертел)
  • e_modf.c (через смену и вычитать)
Смежные вопросы