Coder Social home page Coder Social logo

farplugins / calculator Goto Github PK

View Code? Open in Web Editor NEW
7.0 7.0 2.0 461 KB

Advanced configurable calculator, plugin for Far Manager

License: BSD 3-Clause "New" or "Revised" License

C++ 94.64% C 2.84% Assembly 1.46% CMake 0.96% Batchfile 0.11%
actual calculator far3 plugin

calculator's People

Contributors

alabuzhev avatar ctapmex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

alabuzhev

calculator's Issues

проблема перерисовки

обнаружено и исследовано под Win10 1607 x64 + Far x86
Far b5049 — последний, в котором эффект не обнаружен.
начиная с b5055, эффект возникает и с нарастающей силой проявляется вплоть до крайней ночной (b5210).

воспроизведение.
архив с Far распаковывается в отдельную папку, туда же, в папку плагинов распаковывается Calculator v3.23 x86
запускается Far строкой (я использовал батник):

Far.exe -s Profile
вызываем калькулятор: F11 "calculator" "calculator"
в поле выражения вводится:

12345.67/543.21*135.24*12345.67/543.21*135.24*12345.67/543.21*135.24*12345.67/543.21*135.24
теперь все готово к демонстрации.
у проблемы есть два проявления: визуальное и быстродействие. в вышеописанной тестовой конфигурации действует только визуальное: зажимаем BS и смотрим на строки результата вычислений — помимо естественного мельтешения цифр видим хаотичные цветовые моргания разных строк результата. если же использовать реальную конфигурацию со всеми настройками, скриптами и плагинами, то дополнительно еще появляется падение скорости: например, упомянутая строка выражения удаляется ~4.45 вместо ~3.45 секунды. в более поздних билдах эффект усилился до того, что падение скорости можно обнаружить и на тестовой минимальной конфигурации, а для реальной конфигурации оно увеличивается (время удаления может достигать ~5 с, в отдельных случаях до 6 с).

https://forum.farmanager.com/viewtopic.php?f=9&t=11199

v3.26.0 - неожиданное AV в GetPluginInfoW() на билдах ниже b5555

Проверял вопрос VDVolkov с руборда и действительно х64 сборка на b3702 при запуске вызывает AV в GetPluginInfoW()

Исключение:  Нарушение доступа (чтение из 0x000000000000000A)
Адрес:       0x000007FEE73A1346
Функция:     GetPluginInfoW
Модуль:      \3702 x64\Far\Plugins\Calculator.3.26.0.x64\calc.dll

пока только это, попробую сдампить и поглядеть...

Синтаксис логарифма с произвольным основанием

Предлагаю такую коррекцию файла calcset.csr

--- calcset.csr.bak	Tue Feb 02 21:18:58 2021
+++ calcset.csr	Tue Feb 02 21:18:31 2021
@@ -200 +200 @@
-        <func syntax="log"    mean="_ln(op0) / _ln(op1)"/>
+        <func syntax="log"    mean="_ln(op1) / _ln(op0)"/>

Логичнее писать, ну, например, для десятичного логарифма: log(10,какое-то-число), а не log(какое-то-число,10).
Полагаю, эта строка — просто недоделанная копипаста, если сравнить со строками выше (в патче не приведены).

{INFO] Формат представления экспоненты

С точки зрения нашего удобства вариант записи digit_E_знакdigit удобнее, но с точки зрения математики вариант digit_E_digit/digit_E-digit_ считается допустимым. Я встречал его в математических работах, хотя для чтения он менее удобен чем вариант со знаком экспоненты. По крайней мере когда я учился наши преподаватели и после мы на кафедре знак экспоненты никогда не опускали, что ускоряет чтение сложных формул "с листа" и одновременно снижает число сомнений в правильности трактовки прочитанного.

Ошибка реализации функции round

Функция реализована в файле calcset.csr
Вопрос уже поднимался и аргументировался, но решение не было принято в транк.
Предлагаемый патч

--- calcset.csr.bak	Tue Feb 02 21:07:19 2021
+++ calcset.csr	Tue Feb 02 21:08:50 2021
@@ -182 +182 @@
-        <func syntax="round"  mean="_if( frac(op0) >= 0.5, _if(op0>0, ceil(op0), floor(op0)), _if(op0>0, floor(op0), ceil(op0)) )"/>
+        <func syntax="round"  mean="floor(op0+0.5)"/>

Количество цифр результата

Результат вычислений запредельно длинный. Это не имеет никакого практического смысла, и это вносит неудобство. После каждого нажатия Enter мы видим дальний хвост цифр, который не имеет значения, а начальные, реально нужные цифры уходят за горизонт влево.
Возможны разные решения.

  • Уменьшить захардкоженое количество вычисляемых цифр до практического минимума.
  • Ввести диалоговое, через диалог настройки, или ручное, через параметр настройки, задание количества вычисляемых цифр.
  • То же самое, что в первых двух пунктах, но по отношению к результату, получаемому по нажатию Enter.

ошибка вычисления sin

sin(pi)=0 sin(2*pi)=0 sin(3*pi)=2.7934029957198183141977422640250350414588333968801578468407214574845709946978656626697036035310753364907384805902947876516425e-250 sin(4*pi)=0

значение дюйма

Американский дюйм сейчас это ровно 2,54 см, а не 2,5399956. Исправьте пожалуйста.

bug in saving the configuration

Best calculator ever. But has a bug in saving the configuration. In api-far3.cpp, function SettingsSet and SettingsGet must be instead of "FarSettingsItem item = {0};" f.e. "FarSettingsItem item = {sizeof(FarSettingsItem), 0, name, FST_STRING};".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.