# حاسبة الهجدة / Alhajda Calculator — R2

حاسبة علمية جامعية عربية أولًا، كتطبيق ثابت مستقل في `/labs/calculator/`.
RTL للواجهة وLTR للمعادلات، إنجليزية اختيارية، فاتح/داكن، أرقام هندية،
دون إعلانات أو تتبع أو حساب مستخدم. [تقرير التحقق](TEST-RESULTS.md).

## إصلاح عرض النتائج

في NORM تُعرض **10 خانات معنوية افتراضيًا**، أو العدد المختار، دون أصفار
زائدة؛ تبقى دقة الحساب الداخلية 64 خانة. «نسخ النص» و«المزيد من الخانات»
يعرضان القيمة الداخلية كاملة، ولا يغيّر تقريب الشاشة Ans أو الحسابات اللاحقة.
في DEG تُحسب زوايا sin/cos/tan الخاصة ومضاعفاتها (بما فيها مضاعفات 15°)
بكسور وجذور دقيقة؛ الزوايا القريبة منها لا تُقرَّب إليها.
`sin(30)+1/3` يعرض **5/6** وأسفله **≈0.8333333333**. زر **S⇔D** يبدّل
الدقيق والعشري، ويُصغَّر خط الناتج تلقائيًا بدل لفّه إلى أسطر متعددة.
القيم غير المعرّفة مثل tan(90°) تُرفض. لقطات هذا الإصلاح: `../shots/calc-display-*.png`.

## التشغيل والاختبار

من جذر المستودع، دون عملية بناء:

```sh
python3 -m http.server 8765
# افتح http://127.0.0.1:8765/labs/calculator/
node --test labs/calculator/tests/*.test.mjs
node labs/calculator/tests/smoke.mjs
# بعد تعديل أي ملف:
node labs/calculator/tests/update-cache.mjs
```

اختبار smoke يشغّل خادمًا مؤقتًا إذا لم تُحدَّد `CALC_URL`، ويغلق الخادم
والمتصفح حتى عند الفشل. يستخدم متصفح Chromium واحدًا وسياقات متتابعة.
يمكن ضبط `PLAYWRIGHT_PATH` لمسار Playwright المثبت، و`CHROMIUM_PATH` للمتصفح،
و`CALC_SHOTS` لمجلد اللقطات. يُستخدم متصفح Playwright أو Chromium النظام.
`CALC_ONLY=390-light` يشغّل جولة واحدة للتشخيص. اللقطات الافتراضية في
`../shots/calc-r2-*.png` بالنسبة إلى جذر هذا المستودع.

## ما تغيّر في الجولة الثانية

- واجهة الهاتف: إخفاء الـhero، هيدر صغير، شريط أوضاع sticky قابل للتمرير،
  وزر سهم واضح للمزيد. النتيجة فوق لوحة المفاتيح. زر `=` وحده للحساب،
  دون الزر المكرر؛ شمس/قمر مع aria-label للمظهر.
- معاينة حيّة رمادية أثناء الكتابة، لا تحفظ في السجل ولا تغيّر Ans/PreAns
  أو المتغيرات. التعابير غير المكتملة والتعيينات وتعريف الدوال لا تُعايَن.
- مفتاح «كتابي/نصي»: MathLive محلي محمّل عند التفعيل فقط. إخراج ASCIIMath
  يتحول إلى تعبير mathjs، مع محوّل LaTeX قابل لاختبار الكسور والجذور والأسس
  والمثلثات واللوغاريتمات. الأوامر غير المدعومة تُرفض بدل تخمين قيمتها.
- محرر مصفوفات شبكي 1–6 صفوف وأعمدة، مع اختيار الأبعاد؛ المتجهات تُسطَّح
  للضرب النقطي والاتجاهي. أنظمة الحل الخطي لها شبكتا A وb بحجم 2–4.
- جدول إحصائي x,y,frequency، إضافة وحذف صفوف، لصق Excel/CSV/TSV/semicolon،
  أرقام هندية وحقول بين علامتي اقتباس. y اختياري للإحصاء الأحادي.
- خطوات مشتقات بقواعد الضرب والقسمة والسلسلة، مع التعويض الفعلي في القاعدة؛
  معادلة خطية، تكامل القوة وحالة 1/x، وتحويل أساس بالقسمة المتكررة والبواقي.
- فترات ثقة للمتوسط: t عند جهل σ وz عندما تكون σ معلومة؛ وللنسبة بطريقة Wilson.
  اختبارات z/t لعينة واحدة وعينتين مستقلتين (Welch لاختبار t لعينتين)،
  بديل ثنائي/أصغر/أكبر، وإحصائية وdf وp-value. Pearson χ² للاستقلال مع
  القيم المتوقعة وتنبيه `smallExpected` عندما تقل أي قيمة متوقعة عن 5.
- الرسم: اختيار جذور/تقاطع أول دالتين/قيم قصوى، ثم الضغط على الرسم
  لاختيار أقرب نقطة، أو «أوجد النقاط» للمجال المرئي. علامات قابلة للضغط،
  وقائمة إحداثيات. تصدير PNG بضعف دقة الرسم، وتصدير جدول الدالة CSV.
- مكتبة قابلة للبحث والتصفية: **46 صيغة** رياضيات/فيزياء/كيمياء/مالية،
  لكل منها متغيرات وقيم أولية وحساب مباشر وإدراج في الحاسبة؛
  **38 ثابتًا CODATA 2022** مع وحدة وعدم يقين وبيان التقريب.

## الحساب والأوضاع الأساسية

حساب BigNumber بدقة **64 خانة معنوية**؛ `0.1+0.2=0.3`، أعداد كبيرة وكسور
ومركبات؛ DEG/RAD/GRAD، FIX/SCI/ENG/NORM؛ ناتج كسري دقيق للعمليات الحسابية
البسيطة مع عشري، وكسر مختلط ودوري وDMS وقطبي ونسخ نص/LaTeX.
مثال: `A=5` ثم `A*2`؛ `f(x)=x^2` ثم `f(4)`؛ `Ans` و`PreAns`.
زر ln يُدخل log الطبيعي؛ زر log يُدخل log10. في المحرر الطبيعي ln طبيعي
وlog عشري، وفق اصطلاح الإدخال الرياضي.

جبر وتفاضل: simplify/rationalize/expand/factor، مشتقات رتب 1–20، تكامل
محدد وغير محدد، نهايات من الجهتين أو من جهة واحدة، Σ وΠ حتى 10000 حد.
حل رمزي أو نيوتن أو تنصيف، كثيرات حدود حتى الدرجة 4، متباينات كثيرات حدود
حقيقية بفترات، وأنظمة خطية. مصفوفات det/inv/transpose/rank/eigs/multiply/RREF
مع خطوات غاوس، ومتجهات dot/cross.

ملخص إحصائي، خمسة انحدارات مع r² ورسم، وستة توزيعات normal/binomial/poisson/t/χ²/F
بـpdf أوpmf وcdf وعكسي. تحويل bin/oct/dec/hex بـBigInt وAND/OR/XOR/NOT/shift.
جدول حتى 1001 قيمة، ورسوم متعددة وبارامترية ومشتقة وتظليل تكامل مع تكبير وسحب.
وحدات mathjs المركبة والعادية وأسماء عربية للشائعة. العملات «قريبًا».

## الاختصارات

| المفتاح | الوظيفة |
|---|---|
| Enter | الحساب في الوضع الحالي |
| = | الحساب عندما لا يكون مؤشر الكتابة داخل حقل؛ وزر = على الشاشة |
| Escape | مسح إدخال الحاسبة، أو إغلاق دليل الاختصارات |
| Alt + 1…9 | الأوضاع من الحساب إلى المكتبة |
| Alt + 0 | الوحدات |
| Alt + L | العربية/الإنجليزية |
| Alt + D | فاتح/داكن |
| ? | فتح دليل الاختصارات، حتى أثناء كتابة التعبير |

## المحركات والتراخيص

| المحرك | الإصدار | الترخيص | الاستخدام والاختيار |
|---|---|---|---|
| mathjs | 15.2.0 | Apache-2.0 | BigNumber، مركبات، مصفوفات ووحدات ومشتقات |
| Nerdamer | 1.1.13 | MIT | CAS محلي بتكامل ونهايات وحل وتحليل متسقة الصيغة |
| function-plot | 1.26.0 | MIT | رسم تفاعلي محلي |
| jStat | 1.9.6 | MIT | توزيعات وإحصاء عددي |
| KaTeX | 0.19.0 | MIT | عرض النتيجة والمعادلة دون محرر ثقيل في البداية |
| MathLive | 0.109.2 | MIT | إدخال كتابي اختياري محمّل كسولًا |

تجربة CAS الأولى قارنت Nerdamer وAlgebrite: نجح Nerdamer مباشرة في
التكامل والنهايات والحل والتحليل بصيغة موحدة، بينما احتاج Algebrite أسماء
أوامر مختلفة. ثبّت الإصدار **1.1.13 ذي MIT**؛ الإصدار 2.0 يحمل ترخيصًا مختلفًا.
جرى تأكيد الميزات على الإصدار المثبت بالاختبارات؛ المقارنة لا تنفي قدرات Algebrite.
لا يوجد أي كود GPL من NCalc. الحزم نسخ توزيعية محلية مع تراخيصها في `vendor/`
و`NOTICE`، وكود التطبيق MIT في `LICENSE`. بصمات الحزم في `vendor/versions.json`.
حزمة Nerdamer لها غلاف UMD لتوافق Node دون تعديل الكود الرياضي.
الأيقونات نسخ محلية من أيقونات المستودع.

MathLive JavaScript نحو **824 KiB**؛ مع الخطوط يتجاوز الإجمالي 1 MB.
لذلك يُستبعد المجلد كله من precache الأساسي، ولا يطلبه التطبيق قبل تفعيل
«كتابي». عند أول تفعيل متصل، يحمّل العامل ملفاته وخطوطه للعمل لاحقًا دون اتصال.
إذا لم يُفعَّل متصلًا من قبل، يبقى الإدخال النصي متاحًا دون اتصال.
هذا التكامل يعتمد على [دليل MathLive الرسمي](https://mathlive.io/mathfield/guides/integration/).
الثوابت من [جدول NIST CODATA 2022](https://physics.nist.gov/cuu/Constants/Table/allascii.txt)؛
تحفظ البيانات أسماء المصدر وعدم اليقين. علامة «قيمة مقربة» تميّز القيم التي
تحتوي على نقاط حذف في جدول المصدر، ولو كان تعريف الثابت دقيقًا.

## تم / التالي مقابل قائمة NCalc في الطلب

هذه مقارنة بالقائمة المطلوبة، وليست مراجعة لأحدث إصدار من تطبيق منافس.

| المجال | تم | التالي |
|---|---|---|
| الحساب | 64 خانة، عرض كسري وعشري، تنسيقات وزوايا ومتغيرات ودوال وسجل | مزامنة اختيارية للسجل |
| الإدخال | MathLive اختياري، تحويل ASCIIMath وLaTeX الشائع، معاينة حيّة | توسيع تحويل LaTeX للتعابير المتقدمة والمصفوفات |
| الخطوات | تربيعية، خطية، غاوس وRREF، سلسلة/ضرب/قسمة، قوة التكامل، أنظمة العد | اشتقاق تعليمي عام لكل تعبير وتكامل بالتجزئة والتعويض |
| المصفوفات والبيانات | محررات شبكية، لصق جداول وتكرارات، عمليات ذاتية ومتجهات | استيراد ملفات كبيرة وتحرير رمزي لخلايا المصفوفة |
| الإحصاء | ملخص، 5 انحدارات، 6 توزيعات، فترات ثقة وz/t وχ² مع p-value | اختبارات مقترنة وANOVA وانحدار متعدد |
| الحل والمتباينات | رمزي وعددي، درجة ≤4، أنظمة 2–4 وفترات | متباينات كسرية ومجالات مثلثية عامة |
| الرسم والجدول | جذور وتقاطع وقيم قصوى بالضغط، PNG وCSV، باقي أنواع الرسم | كشف تحليلي شامل لكل الجذور والتقاطعات ودعم التحليل البارامتري |
| المكتبة | 46 صيغة قابلة للحساب والبحث، 38 ثابتًا مع عدم يقين، وحدات | توسيع مكتبة المسائل، العملات قريبًا |
| الهاتف وPWA | واجهة فوق الطية، شريط sticky، سمات واختصارات، عمل دون اتصال | تحسينات وصول وتجربة استخدام مستمرة |

## الحدود والخصوصية

BigNumber دقته 64 خانة معنوية؛ لا يجعل الإحصاء والانحدار والرسم ومدخلات
المصفوفات العشرية 64 خانة: هذه العمليات تستخدم double precision.
تحويل عدد عشري صغير إلى كسر قد يعيد كسرًا تقريبيًا. الدوري محدود بـ2000 رقم،
وθ القطبية بالراديان. السجل آخر 40 عملية؛ المتغيرات والدوال مؤقتة للجلسة.

الخطوات تعليمية مشتقة من قواعد محددة، وليست نظام برهان شاملًا؛ رتبة مشتقة
أعلى من الأولى قد تعرض شرح القاعدة الأساسية مع نتيجة الرتبة المختارة.
التحليل العددي للرسم يمسح 400 جزء من المجال، ثم ينقّح تغيرات الإشارة
والجذور المماسية عبر المشتقة؛ قد تفوته جذور متقاربة أو متذبذبة، ولا يحلل
المسارات البارامترية. الدوال ذات الأقطاب لا تُعامل تلقائيًا كجذور.

فترات t تفترض ملاءمة متوسط العينة واستقلال المشاهدات؛ z يحتاج σ المجتمع
المعلومة. اختبار العينتين مستقل وWelch، وليس اختبارًا مقترنًا. χ² دون تصحيح
Yates؛ `smallExpected` يوضح ضعف تقريب χ² عند التكرارات المتوقعة الصغيرة.
التكرار عدد صحيح موجب، حتى 10000 مشاهدة موسّعة، و500 صف تحريري.
الصيغ المالية تستخدم معدل كل فترة (0.05 = 5%)؛ صيغة القسط المعتادة تتطلب
r≠0 وتوجد صيغة منفصلة للقرض بلا فائدة. استخدم وحدات متسقة داخل كل صيغة.

وضع الاختبار يقيّد CAS والرسم والمكتبة محليًا حسب الإعداد ويعرض شارة واضحة؛
قابل للإلغاء، وليس مراقبة اختبار رسمي. لا إعلانات أو تحليلات أو cookies
أو طلبات لأطراف ثالثة. localStorage يحفظ السجل والتفضيلات فقط؛ «مسح» يمحو السجل.
Cache Storage يحفظ التطبيق؛ حذف بيانات الموقع يمحوه. نطاق العامل
`/labs/calculator/` فقط. لا تُرسل التعابير أو النتائج إلى خادم.

## English

R2 makes the 390px calculator visible above the fold: compact header, sticky
scrolling mode rail with a More control, result before the keypad, clear sun/moon
controls, one equals action, and a non-mutating live preview. MathLive is vendored,
loads only on explicit activation and is then cached with its fonts for offline use.
The core application never requests the optional editor beforehand.

Visual matrix editors support 1–6 dimensions. The data grid accepts x/y/frequency
and Excel/CSV/TSV paste. Added educational product/quotient/chain derivatives,
linear equations, power integration and repeated-division base steps. Statistics
include t/z mean confidence intervals, Wilson proportion intervals, one/two-sample
z/t tests (independent Welch t for two samples) and Pearson chi-square independence,
with p-values, degrees of freedom and expected-count diagnostics.

Graphs find isolated roots, intersections and extrema by button or click, display
selectable markers and export PNG. Function tables export CSV. The searchable
library contains 46 formulas with variable forms and 38 CODATA 2022 constants with
uncertainty and rounding metadata. Press ? for documented keyboard shortcuts.

Run the commands above from the repository root. Smoke tests use one Chromium
instance sequentially at 390/1440 in both themes, exercise the new workflows and
offline mode, and produce `calc-r2-*.png`. All runtime code is local; there are no
third-party requests or analytics. MathLive's optional bundle plus fonts exceeds
1 MB and is excluded from core precache. Licenses and versions are listed above.

Remaining work includes broader LaTeX conversion, general educational derivations,
paired/advanced statistical tests, comprehensive analytic graph feature detection,
and broader inequality domains. Plot analysis is numerical (400 subdivisions plus
refinement), can miss tightly clustered/oscillatory roots, and excludes parametric
analysis. Exam restrictions are reversible local UI controls, not secure proctoring.

Result display defaults to 10 significant digits in NORM, with trailing zeros
removed. Exact degree landmarks use fractions/radicals (for example 5/6 with
≈0.8333333333 below it). S⇔D switches representations. Copy text and More digits
retain the full 64-digit value, while the main line shrinks instead of wrapping.
