MathML и Java [закрываются]

Основная причина, по которой Java не обнаруживает все недостижимые утверждения, заключается в том, что вообще невозможно ответить, доступен ли код или нет. Это следует из того, что проблема остановки неразрешима над машинами Тьюринга.

Итак, ясно, что все недостижимые утверждения не могут быть обнаружены, но почему бы не попробовать оценить условия? Представьте себе, что используемое условие не просто false, а нечто вроде ~x == x. Например, все эти утверждения будут печатать true для каждого источника int x ( ).

    System.out.println((x + x & 1) == 0);
    System.out.println((x + -x & 1) == 0);
    System.out.println((-x & 1) == (x & 1));
    System.out.println(((-x ^ x) & 1) == 0);
    System.out.println((x * 0x80 & 0x56) == 0);
    System.out.println((x << 1 ^ 0x1765) != 0);

Операции могут быть довольно сложными; для их решения требуется время. Это значительно увеличит время сборки, и в конце концов, оно не обнаружит все недостижимые утверждения. Компилятор был разработан, чтобы приложить некоторые усилия, но не тратить слишком много времени на это.

Остается только вопрос: где прекратить разрешать условия? Причины этого не имеют математического обоснования и основаны на сценарии использования. Обоснование для вашего конкретного случая дано JLS-14.21

28
задан Tom R 23 November 2009 в 17:45
поделиться

5 ответов

Я использовал JEuclid для рендеринга MathML в моем проекте Symja (система символьной математики Java - пункт 4 вашего списка). JEuclid может быть слишком медленным (особенно при запуске) для отображения MathML на мобильном телефоне.

Другие альтернативы для рендеринга математических выражений с TeX:

и для реорганизации уравнений или в качестве общих библиотек математики Java:

Проекты калькуляторов для Android:

30
ответ дан 7 revs, 2 users 99% 14 October 2019 в 11:31
поделиться

JScience ( jscience.org ), похоже, имеет некоторую экспериментальную поддержку для внедрения MathML.

Я хотел бы сказать, что я Он очень впечатлен возможностями, которые автор JScience выбрал и доказал, что способен поддерживать его мощную библиотеку Java.

Это довольно удивительный образец мастерства. Если вы занимаетесь значительным количеством сложной математики в своих программах на Java или просто хотите создать утилиту, с которой можно разбираться, тогда вам стоит взглянуть на эту библиотеку. Это может даже дать вам некоторые идеи о вещах, о которых вы никогда не думали делать раньше, потому что они были «слишком сложными».

Существует проект с открытым исходным кодом под названием MathEclipse , который также может вас заинтересовать.

3
ответ дан JohnnySoftware 14 October 2019 в 11:31
поделиться

На странице реализаций W3C MathML ( http://www.w3.org/Math/Software/mathml_software_cat_editors.html ) есть несколько упоминаний об инструментах на основе Java. .. это может быть хорошее место для начала поиска.

Удачи.

4
ответ дан 28 November 2019 в 03:34
поделиться

Я использовал это для вашего пункта 3 выше (рендеринг): http://jeuclid.sourceforge.net/

Он отлично справляется с использованием MathML и создает JPG, PNG и т. д. Он также будет отображать уравнения в графическом интерфейсе пользователя (и я предполагаю, что вы можете посмотреть код графического интерфейса и включить его в свой собственный проект)

2
ответ дан 28 November 2019 в 03:34
поделиться

Конечно, это зависит от наличия браузера, который будет отображать MathML.

В качестве альтернативы можно попробовать jsMath , библиотеку JavaScript, которая использует TeX для отображения уравнений .

0
ответ дан 28 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: