Compare commits

...

46 Commits

Author SHA1 Message Date
Quentin Guidée
9eff895a95 [omega] 1.21.0 2021-02-24 22:25:36 +01:00
Maxime FRIESS
6e7cf88e3f Merge pull request #487 from M4xi1m3/magnify-fix
[apps] Fixed #456
2021-02-24 21:53:42 +01:00
M4x1m3
ba6ee3f1b9 [apps] Fixed #456 2021-02-24 21:47:29 +01:00
ArtichautCosmique
41554caf27 [ion] Icon for the AUR repo (#484)
flat design this time
2021-02-21 18:59:52 +01:00
ArtichautCosmique
0a807c3b69 [ion] Brand new icon for the Windows simulator (#483) 2021-02-21 15:09:32 +01:00
ArtichautCosmique
73017819ac [ion] New icon for the macOS simulator (#464)
* New icon for the macOS simulator!!

* Added a shadow to the macOS icon
2021-02-19 19:04:21 +01:00
Maxime FRIESS
d0e0ee610c Merge pull request #470 from RedGl0w/omegaCIFix
Fix tests with omega and inf new symbol
2021-02-18 19:22:51 +01:00
Maxime FRIESS
a540ef8153 Merge pull request #480 from M4xi1m3/omega-dev
[ion/web] Fixed emscripten EGL error
2021-02-18 15:48:06 +01:00
M4x1m3
a77028a36b [ion/web] Fixed emscripten EGL error 2021-02-18 14:04:04 +01:00
Maxime FRIESS
0250ad8520 Merge pull request #473 from M4xi1m3/omega-dev
[external] Fixed #454
2021-02-16 18:32:10 +01:00
lapingenieur
fcc803d7c5 [readme] Added French README (#475)
Co-authored-by: Quentin <quentin.guidee@gmail.com>
Co-authored-by: Maxime FRIESS <M4x1me@protonmail.com>
2021-02-16 10:01:00 +01:00
Maxime FRIESS
d83e712256 Merge pull request #477 from gkelly/posix-shells
[build] Remove bash-ismes
2021-02-15 19:57:23 +01:00
M4x1m3
6f3cb70f64 [external] Fixed memory leak #454 2021-02-15 12:23:09 +01:00
Maxime FRIESS
77ec00bc50 Merge pull request #471 from M4xi1m3/mk-app-check
[build] Throw an error when user is missing apps
2021-02-13 22:13:46 +01:00
M4x1m3
085c90353d [build] Throw an error when user is missing apps 2021-02-13 22:01:27 +01:00
Joachim LF
b09da48748 [calculation/tests] Fix tests on omega 2021-02-12 10:21:42 +01:00
Joachim LF
ef3682b904 [Poincare/tests] Added infinity symbols 2021-02-12 09:05:41 +01:00
Joachim LF
135a56b6b3 [Poincare/tests] Fix ∞ tests 2021-02-12 09:05:15 +01:00
Maxime FRIESS
f6c9bb23c6 Merge pull request #468 from M4xi1m3/i18n-fix
[i18n] Fixed missing / duplicate entries.
2021-02-10 21:26:13 +01:00
M4x1m3
17284985f7 [i18n] Fixed missing / duplicate entries. 2021-02-10 21:11:10 +01:00
lapingenieur
76e1bf8822 [*.hu.i18n] Improved Hungarian translations 2021-02-10 20:03:36 +01:00
Maxime FRIESS
540c87c71f Merge pull request #465 from LeGmask/infinity
[poincare/parser] Use infinity symbol
2021-02-10 17:28:48 +01:00
Evann DREUMONT
391904900a [apps/toolbox] Add infinity in maths/calcul toolbox 2021-02-10 17:21:12 +01:00
Evann DREUMONT
763ce87d14 [poincare/parser] Use infinity symbol
- Use infinity symbol
- Parse inf, oo, infity
2021-02-10 17:20:14 +01:00
Maxime FRIESS
a60d47bd2e [ion/3ds] Changed launch logo to Homebrew 2021-02-07 18:08:29 +01:00
Maxime FRIESS
875b7b3734 Merge pull request #462 from M4xi1m3/3ds-simu-fix
[ion/3ds] Works again, added CIA target
2021-02-06 18:46:14 +01:00
M4x1m3
9773c09eba [ci] Build 3ds CIA 2021-02-06 18:38:01 +01:00
M4x1m3
fda0848036 [ion/3ds] Added CIA target 2021-02-06 18:34:53 +01:00
M4x1m3
7733378bdc [ion/3ds] Make simulator work again 2021-02-06 17:00:14 +01:00
Maxime FRIESS
3e3a6347a6 Merge pull request #460 from RedGl0w/omegaHomeFix
[Fix] Select last app with incomplete row in home
2021-02-06 16:27:03 +01:00
Maxime FRIESS
3227e7ca8a Merge pull request #452 from ArtichOwO/omega-dev
[themes] Wrong colors in Omega Dark
2021-02-06 16:25:46 +01:00
Maxime FRIESS
51ef7d7404 Merge pull request #461 from M4xi1m3/fix-ci
[Fix] Make CI work again
2021-02-06 16:16:52 +01:00
M4x1m3
da3c4a48d0 [ci] Fixed invalid YML 2021-02-06 16:05:37 +01:00
M4x1m3
ec0e72fcb8 [ci] Made CI run on push 2021-02-06 16:05:37 +01:00
M4x1m3
8a45b3d552 [ci] Moved unit tests to separate workflow 2021-02-06 16:05:27 +01:00
M4x1m3
d35e93901c [ci] Reintroduced 3DS with toggle switch 2021-02-06 15:11:54 +01:00
M4x1m3
8f380adc4f [ci] Fixed checkout and wrong makefile 2021-02-06 10:27:27 +01:00
Joachim LF
61a015b6f1 [Fix] Select last app with incomplete row in home 2021-02-06 09:28:56 +01:00
ArtichOwO
66ea24584c [Theme] Wrong colors in Omega Dark 2021-01-30 11:22:13 +01:00
Quentin
f052ad7bf8 [.github/issue_template] New issue templates 2021-01-29 12:22:16 +01:00
Quentin Guidée
116cbf7df4 [.github/issue_template] Remove issue templates temporarily 2021-01-29 12:13:23 +01:00
Quentin Guidée
46658f7077 [omega] 1.20.3 2020-08-26 14:17:23 +02:00
Quentin Guidée
0235de8010 [omega] 1.20.2 2020-07-23 18:23:30 +02:00
Quentin Guidée
636c5c1d24 Merge branch 'omega-hotfix' into omega-master 2020-07-23 18:23:11 +02:00
Quentin Guidée
4af76cc3ae [omega] 1.20.1 2020-07-21 22:32:19 +02:00
Garret Kelly
668bc95f15 [build] Don't invoke bash-specific '[['
'[[' isn't available when $SHELL isn't set to bash, so use expr from
coreutils to check for the presence of the device in DFU mode.
2020-01-15 22:34:39 -05:00
86 changed files with 1151 additions and 458 deletions

View File

@@ -2,13 +2,26 @@
name: Bug report
about: Omega is not working like it should? Let us know!
title: ''
labels: Bug, Triage
labels: 'Status: Triage, Type: Bug'
assignees: ''
---
#### Describe the bug
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
#### Environment
- Omega Version: {go to settings > about > Omega Version and type the version here}
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- Omega Version: [go to settings > about > Omega Version and type the version here]

View File

@@ -1 +0,0 @@
blank_issues_enabled: false

View File

@@ -1,10 +1,17 @@
---
name: Feature request
about: Suggest an idea for an improvement of Omega
about: Suggest an idea for Omega
title: ''
labels: Feature, Triage
labels: 'Status: Triage, Type: Feature'
assignees: ''
---
#### What I want to see in the next version of Omega
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -0,0 +1,28 @@
---
name: OMEGA BETA ONLY - Bug report
about: Omega 1.21 is not working like it should? Let us know!
title: "[BETA-1.21] …"
labels: 'Status: Triage, Type: Bug'
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- Omega Version: [go to settings > about > Omega Version and type the version here]
- Discord username: ..........#....

View File

@@ -1,8 +1,8 @@
---
name: Other
about: A question? A problem? ...
about: A question? A problem?
title: ''
labels: Triage
labels: 'Status: Triage'
assignees: ''
---

View File

@@ -2,18 +2,18 @@
name: Problems during installation
about: Need help to install Omega?
title: ''
labels: Installation issue, Triage
labels: 'Status: Triage, Type: Installation issue'
assignees: ''
---
#### Describe the problem
**Describe the problem**
#### Logs
**Logs**
```
Copy/paste the logs here (If you have some)
```
#### Environment
**Environment**
- Omega Version: {go to settings > about > Omega Version and type the version here}

View File

@@ -1,6 +1,7 @@
name: Continuous integration
#on: [pull_request, push]
on:
push:
pull_request:
workflow_dispatch:
inputs:
@@ -12,32 +13,42 @@ on:
description: 'Run macOS tests'
required: true
default: 'no'
trigger3DS:
description: 'Run 3DS tests'
required: true
default: 'no'
jobs:
# nintendo_3ds:
# runs-on: ubuntu-latest
# steps:
# - run: wget https://github.com/devkitPro/pacman/releases/download/v1.0.2/devkitpro-pacman.amd64.deb -O /tmp/devkitpro-pacman.deb
# - run: yes | sudo dpkg -i /tmp/devkitpro-pacman.deb
# - run: yes | sudo dkp-pacman -Syu --needed devkitARM 3dstools libctru
# - run: echo ::set-env name=DEVKITPRO::/opt/devkitpro
# - run: echo ::set-env name=DEVKITARM::/opt/devkitpro/devkitARM
# - run: echo ::set-env name=PATH::$DEVKITPRO/tools/bin:$DEVKITARM/bin:$PATH
# - uses: actions/checkout@v1
# with:
# submodules: true
# - run: make -j2 PLATFORM=simulator TARGET=3ds
# - uses: actions/upload-artifact@master
# with:
# name: epsilon-3ds.3dsx
# path: output/release/simulator/3ds/epsilon.3dsx
android:
nintendo_3ds:
if: github.event.inputs.trigger3DS == 'yes'
runs-on: ubuntu-latest
steps:
- run: wget https://github.com/devkitPro/pacman/releases/download/v1.0.2/devkitpro-pacman.amd64.deb -O /tmp/devkitpro-pacman.deb
- run: yes | sudo dpkg -i /tmp/devkitpro-pacman.deb
- run: yes | sudo dkp-pacman -Syu --needed devkitARM 3dstools libctru
- run: echo ::set-env name=DEVKITPRO::/opt/devkitpro
- run: echo ::set-env name=DEVKITARM::/opt/devkitpro/devkitARM
- run: echo ::set-env name=PATH::$DEVKITPRO/tools/bin:$DEVKITARM/bin:$PATH
- uses: actions/checkout@v1
with:
submodules: true
- run: make -j2 PLATFORM=simulator TARGET=3ds
- run: make -j2 PLATFORM=simulator TARGET=3ds epsilon.cia
- uses: actions/upload-artifact@master
with:
name: epsilon-3ds.3dsx
path: output/release/simulator/3ds/epsilon.3dsx
- uses: actions/upload-artifact@master
with:
name: epsilon-3ds.cia
path: output/release/simulator/3ds/epsilon.cia
android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: 'recursive'
- run: make -j2 PLATFORM=simulator TARGET=android
- uses: actions/upload-artifact@master
with:
@@ -48,9 +59,9 @@ jobs:
steps:
- run: sudo apt-get install build-essential imagemagick libfreetype6-dev libjpeg-dev libpng-dev pkg-config
- uses: numworks/setup-arm-toolchain@2020-q2
- uses: actions/checkout@v1
- uses: actions/checkout@v2
with:
submodules: true
submodules: 'recursive'
- run: mkdir final-output
- run: make -j2 MODEL=n0100 EPSILON_I18N=en output/release/device/n0100/epsilon.onboarding.two_binaries
- run: mv output/release/device/n0100/epsilon.onboarding.internal.bin final-output/epsilon.onboarding.internal.en.bin
@@ -89,9 +100,9 @@ jobs:
steps:
- run: sudo apt-get install build-essential imagemagick libfreetype6-dev libjpeg-dev libpng-dev pkg-config
- uses: numworks/setup-arm-toolchain@2020-q2
- uses: actions/checkout@v1
- uses: actions/checkout@v2
with:
submodules: true
submodules: 'recursive'
- run: make -j2 epsilon.dfu
- run: make -j2 epsilon.onboarding.dfu
- run: make -j2 epsilon.onboarding.update.dfu
@@ -114,11 +125,10 @@ jobs:
steps:
- uses: msys2/setup-msys2@v2
- uses: actions/checkout@v2
with:
submodules: 'recursive'
- run: pacman -S --noconfirm mingw-w64-x86_64-gcc mingw-w64-x86_64-freetype mingw-w64-x86_64-pkg-config make mingw-w64-x86_64-python3 mingw-w64-x86_64-libjpeg-turbo mingw-w64-x86_64-libpng
- run: make -j2 PLATFORM=simulator
- run: make -j2 PLATFORM=simulator epsilon.official.exe
- run: make -j2 PLATFORM=simulator test.headless.exe
- run: output/release/simulator/windows/test.headless.exe
- uses: actions/upload-artifact@master
with:
name: epsilon-windows.exe
@@ -129,9 +139,9 @@ jobs:
- uses: numworks/setup-emscripten@v1
with:
sdk: latest-upstream
- uses: actions/checkout@v1
- uses: actions/checkout@v2
with:
submodules: true
submodules: 'recursive'
- run: make -j2 PLATFORM=simulator TARGET=web
- uses: actions/upload-artifact@master
with:
@@ -141,25 +151,23 @@ jobs:
runs-on: ubuntu-latest
steps:
- run: sudo apt-get install build-essential imagemagick libfreetype6-dev libjpeg-dev libpng-dev pkg-config
- uses: actions/checkout@v1
- uses: actions/checkout@v2
with:
submodules: true
submodules: 'recursive'
- run: make -j2 PLATFORM=simulator
- uses: actions/upload-artifact@master
with:
name: epsilon-linux.bin
path: output/release/simulator/linux/epsilon.bin
- run: make -j2 PLATFORM=simulator test.headless.bin
macos:
if: github.event.inputs.triggerMacos == 'yes'
runs-on: macOS-latest
steps:
- run: brew install numworks/tap/epsilon-sdk
- uses: actions/checkout@v2
with:
submodules: 'recursive'
- run: make -j2 PLATFORM=simulator
- run: make -j2 PLATFORM=simulator epsilon.official.app
- run: make -j2 PLATFORM=simulator ARCH=x86_64 test.headless.bin
- run: output/release/simulator/macos/x86_64/test.headless.bin
- uses: actions/upload-artifact@master
with:
name: epsilon-macos.zip
@@ -170,9 +178,9 @@ jobs:
steps:
- run: brew install numworks/tap/epsilon-sdk
- uses: actions/checkout@v2
with:
submodules: 'recursive'
- run: make -j2 PLATFORM=simulator TARGET=ios EPSILON_TELEMETRY=0
- run: make -j2 PLATFORM=simulator TARGET=ios EPSILON_TELEMETRY=0 epsilon.official.ipa
- run: make -j2 PLATFORM=simulator TARGET=ios EPSILON_TELEMETRY=0 test.ipa
- run: make -j2 PLATFORM=simulator TARGET=ios EPSILON_TELEMETRY=0 APPLE_PLATFORM=ios-simulator
- uses: actions/upload-artifact@master
with:

14
.github/workflows/unit-workflow.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
name: Unit tests
on: [pull_request_target]
jobs:
units:
runs-on: ubuntu-latest
steps:
- run: sudo apt-get install build-essential imagemagick libfreetype6-dev libjpeg-dev libpng-dev pkg-config
- uses: actions/checkout@v2
with:
submodules: 'recursive'
- run: make -j2 PLATFORM=simulator test.headless.bin
- run: output/release/simulator/linux/test.headless.bin

177
README.fr.md Normal file
View File

@@ -0,0 +1,177 @@
<p align="center"><img src="https://user-images.githubusercontent.com/12123721/109067616-08b0d500-76ef-11eb-9e23-78f40c335c18.png" /></p>
<p align="center">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="cc by-nc-sa 4.0" src="https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-525252.svg?labelColor=292929&logo=creative%20commons&style=for-the-badge" /></a>
<a href="https://github.com/Omega-Numworks/Omega/issues"><img alt="Issues" src="https://img.shields.io/github/issues/Omega-Numworks/Omega.svg?labelColor=292929&logo=git&style=for-the-badge" /></a>
<br/>
<a href="https://discord.gg/X2TWhh9"><img alt="Discord" src="https://img.shields.io/discord/663420259851567114?color=blue&labelColor=292929&label=chat%20-%20discord&logo=discord&style=for-the-badge" /></a>
</p>
> Don't understand french ? speak english ? here's the [english README](./README.md) !
## À propos
Omega est un fork d'Epsilon, l'OS de Numworks tournant sur les calculatrices du même nom, qui apporte beaucoup de fonctionnalités en plus. Omega est fait pour ceux qui aimeraient ajouter certaines fonctionnalités ayant été rejetées par Numworks à leurs calculatrices (pour des raisons 100% compréhensibles !). [Essayez en ligne](https://getomega.web.app/simulator).
### Quelques fonctionnalités supplémentaires
- Retour du calcul littéral
- Une application RPN
- Application Externes
- Des thèmes
- Python amélioré (module os, méthode open...)
- Un tableau périodique et toutes les masses molaires des éléments dans la toolbox
- *Ainsi que d'autres à découvrir...* [Changelogs complets](https://github.com/Omega-Numworks/Omega/wiki/Changelog) | [Fonctionnalités princpales & captures d'écran](https://github.com/Omega-Numworks/Omega/wiki/Main-features).
## Installation
### Automatique
Vous pouvez installer Omega automatiquement depuis [notre site](https://getomega.web.app/) sur la page "installer".
<a href="https://getomega.web.app"><p align="center"><img alt="Omega Banner Discord" src="https://user-images.githubusercontent.com/12123721/86352956-e9000480-bc66-11ea-82b7-79fd7e56fa27.png" /></p></a>
### Manuelle
Tout d'abord, suivez **la première étape** [ici](https://www.numworks.com/resources/engineering/software/build/), puis :
<details>
<summary><b>Modèle n0100</b></summary>
(note : vous pouvez changer `EPSILON_I18N=fr` en `en`, `nl`, `pt`, `it`, `de`, `es` ou `hu`).
```bash
git clone --recursive https://github.com/Omega-Numworks/Omega.git
cd Omega
git checkout omega-master
make MODEL=n0100 clean
make MODEL=n0100 EPSILON_I18N=fr OMEGA_USERNAME="{Votre nom ici, 15 caractères max}" -j4
make MODEL=n0100 epsilon_flash
```
Important : N'oubliez pas l'argument `--recursive`, Omega a besoin de sous-modules.
Vous pouvez aussi changer le nombre de processus parallèles pendant la compilation en changeant la valeur suivant `-j`.
</details>
<details>
<summary><b>Modèle n0110</b></summary>
```bash
git clone --recursive https://github.com/Omega-Numworks/Omega.git
cd Omega
git checkout omega-master
make clean
make OMEGA_USERNAME="{Votre nom ici, 15 caractères max}" -j4
make epsilon_flash
```
Important : N'oubliez pas l'argument `--recursive`, Omega a besoin de sous-modules.
Vous pouvez aussi changer le nombre de processus parallèles pendant la compilation en changeant la valeur suivant `-j`.
</details>
<details>
<summary><b>Fichiers binaires</b></summary>
Ces fichiers peuvent être utilisés pour distribuer Omega (pour que tout le monde puisse le flasher via [Webdfu_Numworks](https://ti-planet.github.io/webdfu_numworks/)).
```bash
git clone --recursive https://github.com/Omega-Numworks/Omega.git
cd Omega
git checkout omega-master
make clean
make MODEL=n0100 OMEGA_USERNAME="" -j8
make MODEL=n0100 OMEGA_USERNAME="" binpack -j8
make OMEGA_USERNAME="" -j8
make OMEGA_USERNAME="" binpack -j8
```
Important : N'oubliez pas l'argument `--recursive`, Omega a besoin de sous-modules.
Vous pouvez aussi changer le nombre de processus parallèles pendant la compilation en changeant la valeur suivant `-j`.
</details>
<details>
<summary><b>Simulateur web</b></summary>
D'abord, installez emsdk :
```bash
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest-fastcomp
./emsdk activate latest-fastcomp
source emsdk_env.sh
```
Puis, compilez Omega :
```bash
git clone --recursive https://github.com/Omega-Numworks/Omega.git
cd Omega
git checkout omega-master
make clean
make PLATFORM=simulator TARGET=web OMEGA_USERNAME="{Votre nom ici, 15 caractères max}" -j4
```
Le simulateur se trouve dans `output/release/simulator/web/simulator.zip`
Important : N'oubliez pas l'argument `--recursive`, Omega a besoin de sous-modules.
Vous pouvez aussi changer le nombre de processus parallèles pendant la compilation en changeant la valeur suivant `-j`.
</details>
<details>
<summary><b>Simulateur 3DS</b></summary>
Vous aurez besoin de devkitPro et de devkitARM disponible dans votre `$PATH` (instructions [ici](https://devkitpro.org/wiki/Getting_Started) (en anglais))
```bash
git clone --recursive https://github.com/Omega-Numworks/Omega.git
cd Omega
git checkout --recursive omega-dev
make PLATFORM=simulator TARGET=3ds -j
```
Vous pouvez ensuite copier epsilon.3dsx sur une carte SD pour l'exécuter depuis le HBC ou utiliser 3dslink pour le lancer via le réseau :
```bash
3dslink output/release/simulator/3ds/epsilon.3dsx -a <ADRESSE IP 3DS>
```
</details>
Si vous avez besoin d'aide, n'hésitez pas à rejoindre notre serveur discord : https://discord.gg/X2TWhh9
<a href="https://discord.gg/X2TWhh9"><p align="center"><img alt="Omega Banner Discord" src="https://user-images.githubusercontent.com/12123721/86287349-54ef5800-bbe8-11ea-80c1-34eb1f93eebd.png" /></p></a>
---
## Contribution
Pour contribuer, merci de lire le [Wiki](https://github.com/Omega-Numworks/Omega/wiki/Contributing)
## Nos autres projets
* [Omega Themes](https://github.com/Omega-Numworks/Omega-Themes)
* [Omega Website](https://github.com/Omega-Numworks/Omega-Website)
* [Omega RPN `APP`](https://github.com/Omega-Numworks/Omega-RPN)
* [Omega Atom `APP`](https://github.com/Omega-Numworks/Omega-Atom)
* [Omega Design](https://github.com/Omega-Numworks/Omega-Design)
* [Omega Discord Bot](https://github.com/Omega-Numworks/Omega-Discord-Bot)
* [Omega App Template `BETA`](https://github.com/Omega-Numworks/Omega-App-Template)
* [External Apps](https://github.com/Omega-Numworks/External-Apps)
## À propos d'Epsilon
Omega est un fork d'Epsilon, un système d'exploitation performant pour calculatrices graphiques. Il inclut huit applications pour les mathématiques de lycée et d'études supérieurs
Vous pouvez essayer Epsilon depuis votre navigateur sur le [simulateur en ligne](https://www.numworks.com/simulator/).
## Licence
NumWorks est une marque déposée de NumWorks SAS, 24 Rue Godot de Mauroy, 75009 Paris, France.
Nintendo est Nintendo 3DS sont des marques déposées de Nintendo of America Inc, 4600 150th Ave NE, Redmond, WA 98052, Etats-Unis.
NumWorks SAS et Nintendo of America Inc ne sont en aucun cas associés avec ce projet.
* NumWorks Epsilon est disponible sous [Lisense CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode).
* Omega est disponible sous [Lisense CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode).

View File

@@ -1,4 +1,4 @@
<p align="center"><img src="https://github.com/Omega-Numworks/Omega-Design/blob/master/Banners/Omega-Banner-Dev-Branch.png?raw=true" /></p>
<p align="center"><img src="https://user-images.githubusercontent.com/12123721/109067616-08b0d500-76ef-11eb-9e23-78f40c335c18.png" /></p>
<p align="center">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="cc by-nc-sa 4.0" src="https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-525252.svg?labelColor=292929&logo=creative%20commons&style=for-the-badge" /></a>
@@ -7,6 +7,8 @@
<a href="https://discord.gg/X2TWhh9"><img alt="Discord" src="https://img.shields.io/discord/663420259851567114?color=blue&labelColor=292929&label=chat%20-%20discord&logo=discord&style=for-the-badge" /></a>
</p>
> Vous ne comprenez pas l'anglais ? vous êtes francophone ? Regardez le [*LISEZ-MOI* français](./README.fr.md) !
## About
Omega is a fork of Numworks' Epsilon, the OS that runs on their calculator, which brings many features to it. Omega is for the people who want to add features to the calculator, but cannot because they have been rejected by Numworks (for reasons that are 100% understandable!). [Try it online](https://getomega.web.app/simulator).

View File

@@ -11,6 +11,25 @@ apps =
# (path to the apps header).
$(foreach i,${apps_list},${eval include apps/$(i)/Makefile})
app_equals = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1)))
# We list all the apps that are missing
apps_missing = $(foreach i, ${apps_list}, $(if $(call app_equals, apps/$(i)/Makefile, $(wildcard apps/$(i)/Makefile)),, $(i) ) )
# If the two doesn't match, we got an error.
ifneq ($(strip $(apps_missing)),)
miss_modules = 0
# Check if the missing apps are one that are supposed to be submodules
$(foreach i, $(SUBMODULES_APPS), $(if $(call app_equals, $(filter $(i), $(apps_missing)), $(i)), $(eval miss_modules=1)))
ifeq ($(miss_modules), 1)
PLS_IGNORE := $(shell >&2 printf "\nSome submodules apps seem to be missing. To download them, assumming you git clone'd the repo, do\n")
PLS_IGNORE := $(shell >&2 printf " git submodule init\n")
PLS_IGNORE := $(shell >&2 printf " git submodule update\n\n")
endif
$(error Missing apps: $(strip $(apps_missing)))
endif
apps_src += $(addprefix apps/,\
alternate_empty_nested_menu_controller.cpp \
apps_container.cpp \
@@ -43,7 +62,7 @@ apps_src += $(addprefix apps/,\
)
tests_src += $(addprefix apps/,\
exam_mode_configuration_official.cpp \
exam_mode_configuration_non_official.cpp \
)

View File

@@ -196,7 +196,7 @@ bool AppsContainer::dispatchEvent(Ion::Events::Event event) {
}
if (changedZoom) {
KDIonContext::sharedContext()->updatePostProcessingEffects();
redrawWindow();
redrawWindow(true);
return true;
}
}

View File

@@ -11,4 +11,4 @@ AdditionalDeterminant = "Determinant"
AdditionalInverse = "Inverse"
AdditionalRowEchelonForm = "Row echelon form"
AdditionalReducedRowEchelonForm = "Reduced row echelon form"
AdditionalTrace = "Trace"
AdditionalTrace = "Trace"

View File

@@ -3,7 +3,12 @@ CalculAppCapital = "SZÁMOLÁS"
AdditionalResults = "További eredmények"
DecimalBase = "Decimális"
HexadecimalBase = "Hexadecimális"
BinaryBase = "Kétkomponensü"
BinaryBase = "Bináris"
PrimeFactors = "Alapvetö tényezök"
MixedFraction = "Vegyes frakció"
EuclideanDivision = "Euklideszi osztás"
AdditionalDeterminant = "Meghatározó"
AdditionalInverse = "inverz"
AdditionalRowEchelonForm = "Sor echelon forma"
AdditionalReducedRowEchelonForm = "Csökkentett sorú Echelon forma"
AdditionalTrace = "Nyomkövetés"

View File

@@ -114,10 +114,10 @@ QUIZ_CASE(calculation_display_exact_approximate) {
assertCalculationIs("1/2", DisplayOutput::ExactAndApproximate, EqualSign::Equal, nullptr, nullptr, nullptr, &globalContext, &store);
assertCalculationIs("1/3", DisplayOutput::ExactAndApproximate, EqualSign::Approximation, nullptr, nullptr, nullptr, &globalContext, &store);
assertCalculationIs("1/0", DisplayOutput::ApproximateOnly, EqualSign::Unknown, "undef", "undef", "undef", &globalContext, &store);
assertCalculationIs("2x-x", DisplayOutput::ApproximateOnly, EqualSign::Unknown, "undef", "undef", "undef", &globalContext, &store);
assertCalculationIs("1/0", DisplayOutput::ExactOnly, EqualSign::Unknown, "undef", "undef", "undef", &globalContext, &store);
assertCalculationIs("2x-x", DisplayOutput::ExactOnly, EqualSign::Unknown, "x", "undef", "undef", &globalContext, &store);
assertCalculationIs("[[1,2,3]]", DisplayOutput::ApproximateOnly, EqualSign::Unknown, nullptr, nullptr, nullptr, &globalContext, &store);
assertCalculationIs("[[1,x,3]]", DisplayOutput::ApproximateOnly, EqualSign::Unknown, nullptr, "undef", "undef", &globalContext, &store);
assertCalculationIs("[[1,x,3]]", DisplayOutput::ExactAndApproximate, EqualSign::Unknown, nullptr, "[[1,undef,3]]", "[[1,undef,3]]", &globalContext, &store);
assertCalculationIs("28^7", DisplayOutput::ExactAndApproximate, EqualSign::Unknown, nullptr, nullptr, nullptr, &globalContext, &store);
assertCalculationIs("3+√(2)→a", DisplayOutput::ExactAndApproximate, EqualSign::Approximation, "√(2)+3", nullptr, nullptr, &globalContext, &store);
Ion::Storage::sharedStorage()->recordNamed("a.exp").destroy();
@@ -130,9 +130,9 @@ QUIZ_CASE(calculation_display_exact_approximate) {
assertCalculationIs("1+1+random()", DisplayOutput::ApproximateOnly, EqualSign::Unknown, nullptr, nullptr, nullptr, &globalContext, &store);
assertCalculationIs("1+1+round(1.343,2)", DisplayOutput::ApproximateOnly, EqualSign::Unknown, nullptr, "3.34", "3.34", &globalContext, &store);
assertCalculationIs("randint(2,2)+3", DisplayOutput::ApproximateOnly, EqualSign::Unknown, "5", "5", "5", &globalContext, &store);
assertCalculationIs("confidence(0.5,2)+3", DisplayOutput::ApproximateOnly, EqualSign::Unknown, nullptr, nullptr, nullptr, &globalContext, &store);
assertCalculationIs("prediction(0.5,2)+3", DisplayOutput::ApproximateOnly, EqualSign::Unknown, nullptr, nullptr, nullptr, &globalContext, &store);
assertCalculationIs("prediction95(0.5,2)+3", DisplayOutput::ApproximateOnly, EqualSign::Unknown, nullptr, nullptr, nullptr, &globalContext, &store);
assertCalculationIs("confidence(0.5,2)+3", DisplayOutput::ExactOnly, EqualSign::Unknown, nullptr, nullptr, nullptr, &globalContext, &store);
assertCalculationIs("prediction(0.5,2)+3", DisplayOutput::ExactOnly, EqualSign::Unknown, nullptr, nullptr, nullptr, &globalContext, &store);
assertCalculationIs("prediction95(0.5,2)+3", DisplayOutput::ExactOnly, EqualSign::Unknown, nullptr, nullptr, nullptr, &globalContext, &store);
}
@@ -140,10 +140,10 @@ QUIZ_CASE(calculation_symbolic_computation) {
Shared::GlobalContext globalContext;
CalculationStore store(calculationBuffer,calculationBufferSize);
assertCalculationIs("x+x+1+3+√(π)", DisplayOutput::ApproximateOnly, EqualSign::Unknown, "undef", "undef", "undef", &globalContext, &store);
assertCalculationIs("f(x)", DisplayOutput::ApproximateOnly, EqualSign::Unknown, "undef", "undef", "undef", &globalContext, &store);
assertCalculationIs("x+x+1+3+√(π)", DisplayOutput::ExactOnly, EqualSign::Unknown, "2×x+√(π)+4", "undef", "undef", &globalContext, &store);
assertCalculationIs("f(x)", DisplayOutput::ExactOnly, EqualSign::Unknown, "f×x", "undef", "undef", &globalContext, &store);
assertCalculationIs("1+x→f(x)", DisplayOutput::ExactOnly, EqualSign::Unknown, "x+1", nullptr, nullptr, &globalContext, &store);
assertCalculationIs("f(x)", DisplayOutput::ApproximateOnly, EqualSign::Unknown, "undef", "undef", "undef", &globalContext, &store);
assertCalculationIs("f(x)", DisplayOutput::ExactOnly, EqualSign::Unknown, "x+1", "undef", "undef", &globalContext, &store);
assertCalculationIs("f(2)", DisplayOutput::ApproximateOnly, EqualSign::Equal, "3", "3", "3", &globalContext, &store);
assertCalculationIs("2→x", DisplayOutput::ApproximateOnly, EqualSign::Equal, "2", nullptr, nullptr, &globalContext, &store);
assertCalculationIs("f(x)", DisplayOutput::ApproximateOnly, EqualSign::Equal, "3", nullptr, nullptr, &globalContext, &store);

View File

@@ -1,15 +1,15 @@
AddScript = "Script hozzadáadása"
AddScript = "Script hozzáadása"
AllowedCharactersaz09 = "Engedélyezett karakterek: a-z, 0-9, _"
Autocomplete = "Autocomplete"
Autocomplete = "Önkiegészítés"
AutoImportScript = "Script automata importálása"
BuiltinsAndKeywords = "Builtins and keywords"
BuiltinsAndKeywords = "Beépített fonkciók és szókincs"
Console = "Konzol"
DeleteScript = "Script törlése"
DuplicateScript = "Script másolása"
ExecuteScript = "Script indítása"
FunctionsAndVariables = "Függvények és változók"
ImportedModulesAndScripts = "Imported modules and scripts"
NoWordAvailableHere = "No word available here."
ScriptInProgress = "Script in progress"
FunctionsAndVariables = "Fonktiók és változók"
ImportedModulesAndScripts = "Importált scriptek és modulok"
NoWordAvailableHere = "Nincs rendelkezésre álló szó."
ScriptInProgress = "Script müködésben"
ScriptOptions = "Script beállítások"
ScriptSize = "Script size"
ScriptSize = "Script mérete"

View File

@@ -203,7 +203,7 @@ PythonOsRename = "Renomme oldname en newname"
PythonOsListdir = "Liste les fichiers"
PythonTimePrefix = "Préfixe fonction du module temps"
PythonTimeSleep = "Attendre n secondes"
PythonMonotonic = "Retourne le temps monotonic"
PythonMonotonic = "Retourne le temps monotone"
PythonFileOpen = "Ouvre un fichier"
PythonFileSeekable = "Indique si seek peut être utilisé"
PythonFileSeek = "Déplace le curseur interne"

View File

@@ -1,222 +1,222 @@
PythonPound = "Megjegyzés"
PythonPercent = "Modulo"
Python1J = "Képzeletbeli i"
PythonLF = "Line feed"
PythonLF = "Enter"
PythonTab = "Táblázat"
PythonAmpersand = "Bitwise és"
PythonSymbolExp = "Bitwise exkluzív vagy"
PythonVerticalBar = "Bitwise vagy"
PythonAmpersand = "Logikus és"
PythonSymbolExp = "logikus exkluzív vagy pedig"
PythonVerticalBar = "logikus vagy pedig"
PythonImag = "z képzeletbeli része"
PythonReal = "z valódi része"
PythonSingleQuote = "Egyetlen idézet"
PythonAbs = "Abszolút érték / nagyság"
PythonAcos = "Arc koszinusz"
PythonAcosh = "Íves hiperbolikus koszinusz"
PythonAppend = "x hozzáadása a lista végéhez"
PythonArrow = "Arrow from (x,y) to (x+dx,y+dy)"
PythonAsin = "Arc szinusz"
PythonAsinh = "Íves hiperbolikus szinusz"
PythonAtan = "Arc érintö"
PythonAtan2 = "Visszatérés atan (y / x)"
PythonAtanh = "Arc hiperbolikus érintö"
PythonAxis = "Set axes to (xmin,xmax,ymin,ymax)"
PythonBar = "Draw a bar plot with x values"
PythonSingleQuote = "apostróf"
PythonAbs = "Abszolút érték/nagyság"
PythonAcos = "Ív (arc) koszinusz"
PythonAcosh = "Hiperbolikus arc koszinusz"
PythonAppend = "Lista végére hozzáadni x-et"
PythonArrow = "(x,y) nyíla (x+dx,y+dy) nyílához"
PythonAsin = "Ív (arc) szinusz"
PythonAsinh = "Hiperbolikus ív (arc) szinusz"
PythonAtan = "Ív (arc) érintö (tan)"
PythonAtan2 = "atan(y/x) sámolása"
PythonAtanh = "Hiperbolikus ív (arc) érintö (atan)"
PythonAxis = "Tengelyeket (xmin,xmax,ymin,ymax)-ra állitani"
PythonBar = "Az x lista oszlopdiagramja"
PythonBin = "Egész szám konvertálása binárisra"
PythonCeil = "Mennyezet"
PythonChoice = "Véletlenszerü szám a listában"
PythonClear = "A lista ürítése"
PythonCmathFunction = "cmath modul funkció elötag"
PythonColor = "Rgb szín meghatározása"
PythonColor = "Rgb (pzk) szín allítása"
PythonColorBlack = "Fekete szín"
PythonColorBlue = "Kék szín"
PythonColorBrown = "Barna szín"
PythonColorGreen = "Zöld szín"
PythonColorGrey = "Szürke szín"
PythonColorGray = "Szürke szín"
PythonColorOrange = "Narancssárga szín"
PythonColorPink = "Rózsaszín szín"
PythonColorPurple = "Lila szín"
PythonColorRed = "Piros szín"
PythonColorWhite = "White color"
PythonColorWhite = "Fehér szín"
PythonColorYellow = "Sárga szín"
PythonComplex = "A + ib visszaadása"
PythonCopySign = "Visszatérés x-val y jelével"
PythonCopySign = "X visszaadása y jelével"
PythonCos = "Koszinusz"
PythonCosh = "Hiperbolikus koszinusz"
PythonCount = "Számolja az x elöfordulását"
PythonDegrees = "x konvertálása x-röl radiánokra fokokra"
PythonDegrees = "x konvertálása radiánokrol fokokra"
PythonDivMod = "Hányados és maradék"
PythonDrawString = "Szöveg megjelenítése pixelböl (x, y)"
PythonDrawString = "Szöveg megjelenítése (x, y)-en"
PythonErf = "Hiba funkció"
PythonErfc = "Kiegészítö hibafunkció"
PythonErfc = "Kiegészítö hiba funkció"
PythonEval = "Visszaadja az értékelt kifejezést"
PythonExp = "Exponenciális függvény"
PythonExpm1 = "Számítsuk ki az exp (x) -1-et"
PythonExpm1 = "exp(x)-1 sámitása"
PythonFabs = "Abszolút érték"
PythonFillRect = "Töltsön meg egy téglalapot pixelnél (x, y)"
PythonFloat = "x konvertálása float-ra"
PythonFloor = "Emelet"
PythonFillRect = "Téglalap töltése"
PythonFloat = "Konvertálása tizedes számra"
PythonFloor = "Egész része"
PythonFmod = "a modulo b"
PythonFrExp = "Mantissa és az x exponense"
PythonFrExp = "X mantissája és kiállítója"
PythonGamma = "Gamma funkció"
PythonGetPixel = "Visszatérési pixel (x, y) szín"
PythonGetrandbits = "Egész szám k véletlen bittel"
PythonGrid = "Toggle the visibility of the grid"
PythonHex = "Egész szám konvertálása hexadecimálisra"
PythonHist = "Draw the histogram of x"
PythonGetPixel = "Visszatéríti (x,y) színét"
PythonGetrandbits = "Váletlenszám visszatérítése k biten"
PythonGrid = "Rács megjelenítése/elrejtése"
PythonHex = "Decimális szám konvertálása hexadecimális számra"
PythonHist = "x hisztográmiája"
PythonImportCmath = "cmath modul importálása"
PythonImportIon = "Ion modul importálása"
PythonImportKandinsky = "Kandinsky modul importálása"
PythonImportRandom = "Véletlenszerü modul importálása"
PythonImportMath = "Import matematikai modul"
PythonImportMatplotlibPyplot = "Import matplotlib.pyplot module"
PythonImportTime = "Idömodul importálása"
PythonImportOs = "Os modul importálása"
PythonOsUname = "Információ a rendszerről"
PythonOsRemove = "Fájl eltávolítása"
PythonOsRename = "Fájl átnevezése"
PythonOsListdir = "Fájlok listázása"
PythonImportTurtle = "Import teknös modul"
PythonImportMath = "math modul importálása"
PythonImportMatplotlibPyplot = "matplotlib.pyplot modul importálása"
PythonImportTurtle = "turtle modul importálása"
PythonImportTime = "time modul importálása"
PythonIndex = "Az elsö x esemény indexe"
PythonInput = "Érték kérése"
PythonInsert = "Helyezzen x-t az i indexbe a listában"
PythonInt = "x konvertálása egész számra"
PythonInput = "Irjon egy értéket (számot)"
PythonInsert = "x-et i. pozícióra helyezze a listában"
PythonInt = "egész számra konvertálás"
PythonIonFunction = "ion modul funkció elötag"
PythonIsFinite = "Ellenörizze, hogy x véges-e"
PythonIsInfinite = "Ellenörizze, hogy x végtelen-e"
PythonIsKeyDown = "True true, ha a k gomb le van nyomva"
PythonIsNaN = "Ellenörizze, hogy x nem NaN"
PythonKandinskyFunction = "kandinsky modul function prefix"
PythonKeyLeft = "Balra nyíl gomb"
PythonIsFinite = "x véges-e"
PythonIsInfinite = "x végtelen-e"
PythonIsKeyDown = "True-t válaszol ha a k gomb le van nyomva"
PythonIsNaN = "Ellenörizze hogy x nem NaN"
PythonKandinskyFunction = "kandinsky modul funkció elötag"
PythonKeyLeft = "BAL NYÍL gomb"
PythonKeyUp = "FEL NYÍL gomb"
PythonKeyDown = "LE nyíl gomb"
PythonKeyDown = "LE NYÍL gomb"
PythonKeyRight = "JOBB NYÍL gomb"
PythonKeyOk = "OK gomb"
PythonKeyBack = "VISSZA kulcs"
PythonKeyHome = "HOME kulcs"
PythonKeyOnOff = "BE / KI gomb"
PythonKeyShift = "SHIFT kulcs"
PythonKeyAlpha = "ALPHA kulcs"
PythonKeyXnt = "X, N, T kulcs"
PythonKeyVar = "VAR kulcs"
PythonKeyToolbox = "TOOLBOX kulcs"
PythonKeyBackspace = "BACKSPACE kulcs"
PythonKeyExp = "EXPONENTIAL kulcs"
PythonKeyLn = "NATURAL LOGARITHM kulcs"
PythonKeyLog = "DECIMAL LOGARITHM kulcs"
PythonKeyImaginary = "IMAGINÁRIS I kulcs"
PythonKeyComma = "COMMA kulcs"
PythonKeyPower = "POWER kulcs"
PythonKeySine = "SINE kulcs"
PythonKeyCosine = "KOSZIN kulcs"
PythonKeyTangent = "TANGENT kulcs"
PythonKeyPi = "PI kulcs"
PythonKeySqrt = "SQUARE ROOT kulcs"
PythonKeySquare = "SQUARE kulcs"
PythonKeySeven = "7 kulcs"
PythonKeyEight = "8 kulcs"
PythonKeyNine = "9 kulcs"
PythonKeyLeftParenthesis = "Bal oldali PARENTHESIS kulcs"
PythonKeyRightParenthesis = "JOGOS SZÜLETÉS kulcs"
PythonKeyFour = "4 kulcs"
PythonKeyFive = "5 kulcs"
PythonKeySix = "6 kulcs"
PythonKeyMultiplication = "TÖBB MüKÖDÉS kulcs"
PythonKeyDivision = "DIVISION kulcs"
PythonKeyOne = "1 kulcs"
PythonKeyTwo = "2 kulcs"
PythonKeyThree = "3 kulcs"
PythonKeyPlus = "PLUS kulcs"
PythonKeyMinus = "MINUS kulcs"
PythonKeyZero = "0 kulcs"
PythonKeyDot = "DOT kulcs"
PythonKeyEe = "10 POWER X kulcs"
PythonKeyAns = "ANS kulcs"
PythonKeyExe = "EXE kulcs"
PythonLdexp = "Visszatérés x * (2 ** i), inverz a frexp értékhez"
PythonLength = "Objektum hossza"
PythonLgamma = "Log-gamma funkció"
PythonLog = "Logaritmus az alap"
PythonLog10 = "Logaritmus az alaphoz 10"
PythonLog2 = "Logaritmus az alaphoz 2"
PythonMathFunction = "matematikai modul funkció elötag"
PythonMatplotlibPyplotFunction = "matplotlib.pyplot module prefix"
PythonKeyBack = "VISSZA gomb"
PythonKeyHome = "HOME gomb"
PythonKeyOnOff = "ON/OFF gomb"
PythonKeyShift = "SHIFT gomb"
PythonKeyAlpha = "ALPHA gomb"
PythonKeyXnt = "X,N,T gomb"
PythonKeyVar = "VAR gomb"
PythonKeyToolbox = "TOOLBOX gomb"
PythonKeyBackspace = "TÖRLÉS gomb"
PythonKeyExp = "EXPONENCIÁLIS gomb"
PythonKeyLn = "NEPERIAI LOGARITHM gomb"
PythonKeyLog = "DECIMÁLIS LOGARITHM gomb"
PythonKeyImaginary = "KÉPZELETBELI I gomb"
PythonKeyComma = "VESSZÖ gomb"
PythonKeyPower = "KIÁLLÍTÓ gomb"
PythonKeySine = "SZINUSZ gomb"
PythonKeyCosine = "KOSZINUSZ gomb"
PythonKeyTangent = "TANGENS gomb"
PythonKeyPi = "PI gomb"
PythonKeySqrt = "NÉGYZETGYÖK gomb"
PythonKeySquare = "NÉGYZET gomb"
PythonKeySeven = "7 gomb"
PythonKeyEight = "8 gomb"
PythonKeyNine = "9 gomb"
PythonKeyLeftParenthesis = "BAL ZÁRÓJEL gomb"
PythonKeyRightParenthesis = "JOB ZÁRÓJEL gomb"
PythonKeyFour = "4 gomb"
PythonKeyFive = "5 gomb"
PythonKeySix = "6 gomb"
PythonKeyMultiplication = "SZOZÁS gomb"
PythonKeyDivision = "OSZTÁS gomb"
PythonKeyOne = "1 gomb"
PythonKeyTwo = "2 gomb"
PythonKeyThree = "3 gomb"
PythonKeyPlus = "PLUS gomb"
PythonKeyMinus = "MINUS gomb"
PythonKeyZero = "0 gomb"
PythonKeyDot = "PONT gomb"
PythonKeyEe = "10 X KITEVÖ gomb"
PythonKeyAns = "ANS gomb"
PythonKeyExe = "EXE gomb"
PythonLdexp = "frexp ellentéte : x*(2**i)"
PythonLength = "Egy targy hossza"
PythonLgamma = "Gamma funkció logaritmusa"
PythonLog = "a alapú logaritmus"
PythonLog10 = "Decimális logaritmus"
PythonLog2 = "Bináris logaritmus"
PythonMathFunction = "math modul funkció elötag"
PythonMatplotlibPyplotFunction = "matplotlib.pyplot elötag"
PythonMax = "Maximum"
PythonMin = "Minimum"
PythonModf = "Az x tört és egész részei"
PythonMonotonic = "A monoton óra értéke"
PythonOct = "Egész szám konvertálása oktális értékre"
PythonPhase = "z fázis"
PythonPlot = "Plot y versus x as lines"
PythonPolar = "z poláris koordinátákban"
PythonPop = "Az utolsó elem eltávolítása és visszaküldése"
PythonPower = "x emelve az y teljesítményre"
PythonPrint = "Objektum nyomtatása"
PythonRadians = "x konvertálása x fokról radiánra"
PythonRandint = "Véletlen egész szám [a, b] -ben"
PythonRandom = "Lebegöpontos szám [0,1-ben ["
PythonRandomFunction = "véletlenszerü modul funkció elötag"
PythonRandrange = "Véletlen szám a tartományban (start, stop)"
PythonRangeStartStop = "Lista az elejétöl a stop-1-ig"
PythonRangeStop = "Lista 0-tól stop-1-ig"
PythonRect = "z derékszögü koordinátákban"
PythonRemove = "Távolítsa el az x elsö elöfordulását"
PythonReverse = "A lista elemeinek megfordítása"
PythonRound = "N számjegyre kerekítve"
PythonScatter = "Draw a scatter plot of y versus x"
PythonSeed = "Inicializálja a véletlenszám-generátort"
PythonSetPixel = "Színes pixel (x, y)"
PythonShow = "Display the figure"
PythonSin = "Sine"
PythonModf = "x-nek tört és egész részei"
PythonMonotonic = "Az óra értékét adja vissza"
PythonOct = "Decimális szám konvertálása octális számra"
PythonPhase = "z fázisa"
PythonPlot = "y-t jelöli x függvényében"
PythonPolar = "Verctorizálni"
PythonPop = "Az utolsó elemet el törölni"
PythonPower = "x y. kitevö"
PythonPrint = "Ki irni a elemeket"
PythonRadians = "Fokról radiánra konvertálni"
PythonRandint = "Véletlen egész szám [a;b] -ban"
PythonRandom = "Decimális szám [0;1] -ban"
PythonRandomFunction = "random modul funkció elötag"
PythonRandrange = "Véletlen szám range(start,stop)-ban"
PythonRangeStartStop = "start-tol stop-ig listája"
PythonRangeStop = "0 tol stop-ig lista"
PythonRect = "Algebrai számra konvertálni"
PythonRemove = "Elsö x elöfordulását törolni"
PythonReverse = "A lista elemeit megfordítani (másik irány)"
PythonRound = "N számjegyre kerekítni"
PythonScatter = "(x,y) halmaza"
PythonSeed = "Inicializálni a véletlenszám-választót"
PythonSetPixel = "Az (x,y) pixel-t ki szinezni"
PythonShow = "Mutassa az ábrát"
PythonSin = "Szinusz"
PythonSinh = "Hiperbolikus szinusz"
PythonSleep = "A végrehajtás felfüggesztése t másodpercre"
PythonSort = "A lista rendezése"
PythonSleep = "t másodpercre meg állitani a programmot"
PythonSort = "A listát rendezni"
PythonSqrt = "Négyzetgyök"
PythonSum = "Összegzi a lista elemeit"
PythonTan = "Érintö"
PythonTanh = "Hiperbolikus érintö"
PythonText = "Display a text at (x,y) coordinates"
PythonTimeFunction = "idömodul funkció elötag"
PythonTrunc = "x egészre csonkítva"
PythonTurtleBackward = "Visszalépés x pixelrel"
PythonTurtleCircle = "r pixel sugarú kör"
PythonTurtleColor = "Állítsa be az toll színét"
PythonTurtleColorMode = "Set the color mode to 1.0 or 255"
PythonTurtleForward = "Ugrás x pixelrel"
PythonTurtleFunction = "teknös modul funkció elötag"
PythonTurtleGoto = "Mozgatás (x, y) koordinátákra"
PythonTurtleHeading = "Visszaadja az aktuális címsort"
PythonSum = "Összeadni a lista elemeit"
PythonTan = "Érintö (tan)"
PythonTanh = "Hiperbolikus érintö (tan)"
PythonText = "(x,y) nél egy szöveget irni"
PythonTimeFunction = "time funkció elötag"
PythonTrunc = "Egész csonka (?)"
PythonTurtleBackward = "x pixelt hátra"
PythonTurtleCircle = "r pixel sugarú kört rajzolni"
PythonTurtleColor = "Toll szinét beállitani"
PythonTurtleColorMode = "Szin módot 1.0-ra vagy 255-ra állitani"
PythonTurtleForward = "x pixelt elölre"
PythonTurtleFunction = "turtle modul funkció elötag"
PythonTurtleGoto = "Menjen a (x,y) koordinátákra"
PythonTurtleHeading = "Visszaadja az aktuális irányt"
PythonTurtleHideturtle = "A teknös elrejtése"
PythonTurtleIsdown = "Visszatérés igazhoz, ha az toll lefelé"
PythonTurtleLeft = "Forduljon fokkal balra"
PythonTurtleIsdown = "True-t válaszol ha a toll irás pozícióban van"
PythonTurtleLeft = "a fokkot forduljon balra"
PythonTurtlePendown = "Húzza le a tollat"
PythonTurtlePensize = "Állítsa a vonalvastagságot x pixelre"
PythonTurtlePenup = "Húzza fel a tollat"
PythonTurtlePosition = "Az aktuális (x, y) hely visszaadása"
PythonTurtleReset = "A rajz visszaállítása"
PythonTurtleRight = "Forduljon fokkal jobbra"
PythonTurtleSetheading = "Állítsa be a tájolást fokokra"
PythonTurtleSetposition = "A helymeghatározás"
PythonTurtleShowturtle = "Mutasd a teknösöt"
PythonTurtlePosition = "Az aktuális (x,y) pozíciót visszaadása"
PythonTurtleReset = "Visszaállitani a rajzot (torléssel)"
PythonTurtleRight = "a fokkot forduljon jobbra"
PythonTurtleSetheading = "a fokokra állítja be az irányt"
PythonTurtleSetposition = "A teknös pozicioját allitja"
PythonTurtleShowturtle = "A teknöst meg mutatni"
PythonTurtleSpeed = "Rajzolási sebesség 0 és 10 között"
PythonTurtleWrite = "Display a text"
PythonUniform = "Lebegöpontos szám [a, b] -ben"
PythonImportTime = "Idömodul importálása"
PythonTimePrefix = "idömodul funkció elötag"
PythonTimeSleep = "Várj n másodpercet"
PythonMonotonic = "Vissza a monoton idö"
PythonTurtleWrite = "Szöveg irás"
PythonUniform = "Lebegöpontos szám [a,b] -ban"
PythonImportTime = "time modul importálása"
PythonTimePrefix = "time funkció elötag"
PythonTimeSleep = "n másodpercet várni"
PythonMonotonic = "Meg fordítani a monoton idö"
PythonFileOpen = "Fájl megnyitása"
PythonFileSeekable = "A fájl kereshető?"
PythonFileSeek = "A fájl kurzorának áthelyezése"
PythonFileTell = "A fájl kurzorának helye"
PythonFileClose = "Bezár egy fájlt"
PythonFileClosed = "Igaz, ha a fájl bezárt"
PythonFileRead = "Olvasson méretbájtig"
PythonFileWrite = "B beírása fájlba"
PythonFileReadline = "Olvas egy sort"
PythonFileReadlines = "Olvassa a sorok listáját"
PythonFileTruncate = "A fájl átméretezése méretre"
PythonFileWritelines = "Sorok listáját írja"
PythonFileName = "a fájl neve"
PythonFileMode = "a fájl nyitott módja"
PythonFileReadable = "A fájl olvasható?"
PythonFileWritable = "A fájl írható?"
PythonFileSeekable = "Seek-et lehete használni"
PythonFileSeek = "A kurzort áthelyezni"
PythonFileTell = "Visszaadja a kurzor helye"
PythonFileClose = "Bezárni egy fájlt"
PythonFileClosed = "True ha a fájl bezárva"
PythonFileRead = "Olvas 16 bájtig"
PythonFileWrite = "b-t irjon a fájlba"
PythonFileReadline = "Olvas egy sort vagy 16 bájtig"
PythonFileReadlines = "Olvas több sort"
PythonFileTruncate = "A fájl átméretezése"
PythonFileWritelines = "Irjon több sort"
PythonFileName = "A fájl neve"
PythonFileMode = "A fájl nyitott módja"
PythonFileReadable = "read-et lehete használni"
PythonFileWritable = "write-ot lehete használni"
PythonImportOs = "os modul importálása"
PythonOsUname = "Rendszer informaciók"
PythonOsRemove = "Fájl törlése"
PythonOsRename = "Fájl átnevezése"
PythonOsListdir = "Fájlok listája"

View File

@@ -1,7 +1,7 @@
ExternalApp = "External"
ExternalAppCapital = "EXTERNAL"
ExternalAppApiMismatch = "API mismatch"
ExternalAppExecError = "Cannot execute file"
ExternalAppApiMismatch = "Décalage API"
ExternalAppExecError = "Le fichier ne peut pas être exécuté"
ExternalNotCompatible = "External n'est pas compatible"
WithSimulator = "avec le simulateur"
WithN0100 = "avec n0100"

View File

@@ -1,9 +1,9 @@
ExternalApp = "Külsö"
ExternalAppCapital = "KÜLSö"
ExternalAppCapital = "KÜLSÖ"
ExternalAppApiMismatch = "API eltérés"
ExternalAppExecError = "A fájl nem futtatható"
ExternalNotCompatible = "Ez az alkalmazás nem kompatibilis a "
ExternalNotCompatible = "Externál nem kompatibilis"
WithSimulator = "Szimulátorral"
WithN0100 = "a n0100-el"
GetMoreAppsAt = "Mégtöbb alkalmazás a"
NoAppsInstalled = "Nincs letöltött alkalmazás"
WithN0100 = "n0100-al"
GetMoreAppsAt = "Mégtöbb alkalmazás itt :"
NoAppsInstalled = "Nincs letöltött externál"

View File

@@ -13,21 +13,21 @@ IntervalX = "x intervallum"
FunctionDomain = "Tervtartomány"
FunctionColor = "Funkció színe"
NoFunction = "Nincs funkció"
NoActivatedFunction = "Nincs bekapcsolt funkció"
PlotOptions = "Tervezési lehetöségek"
Compute = "Számítás"
NoActivatedFunction = "Nincs használt funkció"
PlotOptions = "Görbe beállítások"
Compute = "Kiszámolás"
Zeros = "Nullák"
Tangent = "Tangens"
Intersection = "Keresztezés"
Intersection = "Metszéspont"
Preimage = "Inverz kép"
SelectLowerBound = "Alsó határ kiválasztása"
SelectUpperBound = "Felsö határ kiválasztása"
NoMaximumFound = "Nem található maximális érték"
NoMinimumFound = "Nem található minimum"
NoZeroFound = "Nem található nulla"
NoMaximumFound = "Nem talált maximum-ot"
NoMinimumFound = "Nem talált minimum-ot"
NoZeroFound = "Nem talált nullát"
NoIntersectionFound = "Nem található keresztezödés"
NoPreimageFound = "Nem található inverz kép"
DerivativeFunctionColumn = "Származékosggvény oszlop"
HideDerivativeColumn = "A derivatív függvény elrejtése"
AllowedCharactersAZaz09 = "Engedélyezett karakterek: A-Z, a-z, 0-9, _"
DerivativeFunctionColumn = "A derivált fügvény oszlopa"
HideDerivativeColumn = "A derivált függvény oszlop elrejtése"
AllowedCharactersAZaz09 = "Engedélyezett karakterek: A..Z, a..z, 0..9, _"
ReservedName = "Fenntartott név"

View File

@@ -33,9 +33,20 @@ void AppCell::layoutSubviews(bool force) {
m_nameView.setFrame(KDRect((bounds().width()-nameSize.width())/2-k_nameWidthMargin, bounds().height()-nameSize.height() - 2*k_nameHeightMargin, nameSize.width()+2*k_nameWidthMargin, nameSize.height()+2*k_nameHeightMargin), force);
}
void AppCell::setExtAppDescriptor(const char* name, const uint8_t *icon, size_t iconLength) {
m_external_app = true;
m_iconView.setImage(icon, iconLength);
m_iconView.setImage(nullptr);
m_nameView.setText(name);
m_nameView.setTextColor(Palette::HomeCellTextExternal);
m_nameView.setMessage(I18n::Message::Default);
layoutSubviews();
}
void AppCell::setExtAppDescriptor(const char* name, const Image* icon) {
m_external_app = true;
m_iconView.setImage(icon);
m_iconView.setImage(nullptr, 0);
m_nameView.setText(name);
m_nameView.setTextColor(Palette::HomeCellTextExternal);
m_nameView.setMessage(I18n::Message::Default);
@@ -45,6 +56,7 @@ void AppCell::setExtAppDescriptor(const char* name, const Image* icon) {
void AppCell::setAppDescriptor(::App::Descriptor * descriptor) {
m_external_app = false;
m_iconView.setImage(descriptor->icon());
m_iconView.setImage(nullptr, 0);
m_nameView.setMessage(descriptor->name());
m_nameView.setTextColor(Palette::HomeCellText);
m_nameView.setText(nullptr);

View File

@@ -18,6 +18,7 @@ public:
void reloadCell() override;
void setAppDescriptor(::App::Descriptor * appDescriptor);
void setExtAppDescriptor(const char* name, const Image* icon);
void setExtAppDescriptor(const char* name, const uint8_t *icon, size_t iconLength);
private:
static constexpr KDCoordinate k_iconMargin = 22;
static constexpr KDCoordinate k_iconWidth = 55;

View File

@@ -189,9 +189,8 @@ void Controller::willDisplayCellAtLocation(HighlightCell * cell, int i, int j) {
if (img_index != -1) {
External::Archive::File image_file;
if (External::Archive::fileAtIndex(img_index, image_file)) {
const Image* img = new Image(55, 56, image_file.data, image_file.dataLength);
appCell->setExtAppDescriptor(app_file.name, img);
// const Image* img = new Image(55, 56, image_file.data, image_file.dataLength);
appCell->setExtAppDescriptor(app_file.name, image_file.data, image_file.dataLength);
} else {
appCell->setExtAppDescriptor(app_file.name, ImageStore::ExternalIcon);
}
@@ -234,7 +233,7 @@ void Controller::tableViewDidChangeSelection(SelectableTableView * t, int previo
* (so the previous one is always visible). */
int appIndex = (t->selectedColumn()+t->selectedRow()*k_numberOfColumns)+1;
if (appIndex >= this->numberOfIcons()+1) {
t->selectCellAtLocation(previousSelectedCellX, previousSelectedCellY);
t->selectCellAtLocation((this->numberOfIcons()%3)-1, (this->numberOfIcons() / k_numberOfColumns));
}
}

View File

@@ -25,6 +25,7 @@ const ToolboxMessageTree calculChildren[] = {
ToolboxMessageTree::Leaf(I18n::Message::IntCommandWithArg, I18n::Message::Integral, false, I18n::Message::IntCommand),
ToolboxMessageTree::Leaf(I18n::Message::SumCommandWithArg, I18n::Message::Sum, false, I18n::Message::SumCommand),
ToolboxMessageTree::Leaf(I18n::Message::ProductCommandWithArg, I18n::Message::Product, false, I18n::Message::ProductCommand),
ToolboxMessageTree::Leaf(I18n::Message::Infinity, I18n::Message::InfinityMessage, false, I18n::Message::Infinity),
};
const ToolboxMessageTree complexChildren[] = {

View File

@@ -1,7 +1,7 @@
UpdateAvailable = "Elérhetö Frissítések!"
UpdateMessage1 = "Fontos frissítések vannak"
UpdateMessage2 = "a számológépéhez."
UpdateMessage3 = "Látogasson el a weboldalunkra a számítógépröl"
UpdateMessage3 = "Töltje le a weboldalunkról az utolso verziót"
UpdateMessage4 = "www.numworks.com/update"
BetaVersion = "BETA VERZIÓ"
BetaVersionMessage1 = ""
@@ -10,4 +10,4 @@ BetaVersionMessage3 = "Lehet, hogy hibákat észlel."
BetaVersionMessage4 = ""
BetaVersionMessage5 = "Kérjük, küldjön minden visszajelzést a"
BetaVersionMessage6 = "contact@numworks.com email címre"
Skip = "Ugrás"
Skip = "Tovább"

View File

@@ -11,17 +11,17 @@ ExponentialDistribution = "Exponenciális eloszlás"
GeometricDistribution = "Geometriai eloszlás"
PoissonDistribution = "Poisson eloszlás"
ChiSquaredDistribution = "Chi-négyzet eloszlás"
StudentDistribution = "Diák eloszlása"
FisherDistribution = "Poisson eloszlás"
StudentDistribution = "Student eloszlása"
FisherDistribution = "Fisher eloszlás"
ChooseParameters = "Paraméterek kiválasztása"
RepetitionNumber = "n: A kísérletek száma"
SuccessProbability = "p: A siker valószínüsége"
RepetitionNumber = "n: ismétlések száma"
SuccessProbability = "p: a siker valószínüsége"
IntervalDefinition = "[a, b]: intervallum"
LambdaExponentialDefinition = "λ: Rate paraméter"
MeanDefinition = "μ: Mean"
LambdaExponentialDefinition = "λ: paraméter"
MeanDefinition = "μ: remény vagy atlag"
DeviationDefinition = "σ: szórás"
LambdaPoissonDefinition = "λ: Paraméter"
DegreesOfFreedomDefinition = "k: Szabadságfokok"
D1FisherDefinition = "d1: A számláló szabadsági foka"
D2FisherDefinition = "d2: A nevezó szabadsági foka"
LambdaPoissonDefinition = "λ: paraméter"
DegreesOfFreedomDefinition = "k: szabadságfokok"
D1FisherDefinition = "d1: a számláló szabadságfokai"
D2FisherDefinition = "d2: a nevezó szabadságfokai"
ComputeProbability = "Számítsa ki a valószínüségeket"

View File

@@ -1,21 +1,20 @@
RegressionApp = "Regresszió"
RegressionAppCapital = "REGRESSZIÓ"
Regression = "Regresszió"
Reg = "reg"
MeanDot = "Középérték"
RegressionCurve = "Regressziós görbe"
XPrediction = "Jóslás megadva X"
XPrediction = "Jóslás X megadva"
YPrediction = "Jóslás Y megadva"
ValueNotReachedByRegression = "Az ablakban az érték még nem volt elérve"
NumberOfDots = "Pontok száma"
Covariance = "Kovariancia"
Linear = "Lineáris"
Proportional = "Proportional"
Proportional = "Általános"
Quadratic = "Másodfokú"
Cubic = "Kocka"
Cubic = "Kockás"
Quartic = "Kvartikus"
Logarithmic = "Logaritmikus"
Power = "Teljesítmény"
Trigonometrical = "Trigonometrikus"
Logistic = "Logisztikai"
DataNotSuitableForRegression = " Az adat nem megfelelö ehhez a regressziós modellhez"
DataNotSuitableForRegression = "Ezek az adatok nem megfelelö ehhez a regressziós modellhez"

View File

@@ -1,5 +1,5 @@
SequenceApp = "Szekvenciák"
SequenceAppCapital = "Szekvenciák"
SequenceAppCapital = "SZEKVENCIÁK"
SequenceTab = "Szekvenciák"
AddSequence = "Szekvencia hozzáadása"
ChooseSequenceType = "Válassza ki a sorozat típusát"
@@ -14,9 +14,9 @@ NoSequence = "Nincs sorrend"
NoActivatedSequence = "Nincs szekvencia bekapcsolva"
NStart = "N start"
NEnd = "N vég"
TermSum = "A feltételek összege"
SelectFirstTerm = "Elsö ciklus kiválasztása"
SelectLastTerm = "Utolsó kifejezés kiválasztása"
TermSum = "A kifejezés összege"
SelectFirstTerm = "Elsö kifejezés kiválasztása "
SelectLastTerm = "Utolsó kifejezés kiválasztása "
ValueNotReachedBySequence = "Az értéket nem érte el a sorozat"
NColumn = "n oszlop"
FirstTermIndex = "Elsö kifejezés index"

View File

@@ -12,21 +12,21 @@ ToDeactivateExamMode1 = "a vizsga mód kikapcsoláshoz"
ToDeactivateExamMode2 = "csatlakoztassa a számológépet a számítógéphez"
ToDeactivateExamMode3 = "vagy egy konnektorhoz."
# --------------------- Please do not edit these messages ---------------------
ExamModeWarning1 = "Vigyázat: ennek betartása"
ExamModeWarning2 = "nem hivatalos szoftver vizsgálati módja"
ExamModeWarning3 = "a NumWorks/Omega nem garantálja."
AboutWarning1 = "Vigyázat: egy"
AboutWarning2 = "nem hivatalos szoftververzió."
AboutWarning3 = "A NumWorks nem vállal felelösséget"
AboutWarning4 = "az esetleges károkért."
ExamModeWarning1 = "Vigyázat: a használt szoftver nem"
ExamModeWarning2 = "hivatalos, Numworks nem garantálja"
ExamModeWarning3 = "a vizsgálati mód megfelelőségét."
AboutWarning1 = "Vigyázat: a használt szoftver"
AboutWarning2 = "nem hivatalos. A NumWorks nem"
AboutWarning3 = "vállal felelösséget az"
AboutWarning4 = "esetleges károkért."
# -----------------------------------------------------------------------------
About = "Egyéb"
About = "Apropó"
Degrees = "Fokok "
Gradians = "Gradiens "
Radian = "Radián "
Decimal = "Tizedes "
Scientific = "Tudományos "
Engineering = "Mérnöki "
Engineering = "Mérnökség "
SignificantFigures = "Tizedes számok "
Real = "Valódi "
Cartesian = "Kartéziánus "
@@ -40,31 +40,31 @@ FontSizes = "Python betü méret"
LargeFont = "Nagy "
SmallFont = "Kicsi "
SerialNumber = "Sorozatszám"
UpdatePopUp = "Elöugró ablak frissítése"
BetaPopUp = "Béta pop-up"
UpdatePopUp = "Frissítés figyelmeztetés"
BetaPopUp = "Béta figyelmeztetés"
Contributors = "Közremüködök"
Accessibility = "Hozzáférhetöség"
Accessibility = "Több vizuális beállitások"
AccessibilityInvertColors = "Invertált színek"
AccessibilityMagnify = "Nagyítás"
AccessibilityMagnify = "Nagyító"
AccessibilityGamma = "Gamma korrekció"
AccessibilityGammaRed = "Piros gamma"
AccessibilityGammaGreen = "Zöld gamma"
AccessibilityGammaBlue = "Kék gamma"
MathOptions = "Matematikai beállítások"
SymbolMultiplication = "Szorzás"
SymbolMultiplicationCross = "Kereszt"
SymbolMultiplicationCross = "Kereszt "
SymbolMultiplicationMiddleDot = "Pont "
SymbolMultiplicationStar = "Csillag "
SymbolMultiplicationAutoSymbol = "Automata "
SymbolFunction = "Kifejezési formátum "
SymbolDefaultFunction = "alapértelmezett "
SymbolMultiplicationAutoSymbol = "Automatitus "
SymbolFunction = "Kifejezés "
SymbolDefaultFunction = "Alap "
SymbolArgFunction = "Üres "
SymbolArgDefaultFunction = "Argumentummal "
PythonFont = "Python Betütipus"
MemUse = "Memória"
DateTime = "Date/time"
ActivateClock = "Activate clock"
Date = "Date"
Time = "Time"
RTCWarning1 = "Enabling the clock drains the battery faster"
RTCWarning2 = "when the calculator is powered off."
DateTime = "Dátum/óra"
ActivateClock = "Óra bekapcsolása"
Date = "Datum"
Time = "Óra"
RTCWarning1 = "Amikor a számológép alvómódban van, az óra"
RTCWarning2 = "használása az elemet gyorsabban meríti ki."

View File

@@ -94,3 +94,8 @@ XStart = "X Startwert"
Zoom = "Zoom"
Developers = "Entwickler"
BetaTesters = "Beta-Tester"
ExamModeMode = "Modus"
ExamModeModeStandard = "Standard "
ExamModeModeNoSym = "Kein Symbol "
ExamModeModeNoSymNoText = "Kein Symbol kein Text "
ExamModeModeDutch = "Niederländisch "

View File

@@ -94,3 +94,8 @@ XStart = "X inicio"
Zoom = "Zoom"
Developers = "Desarrolladores"
BetaTesters = "Probadores beta"
ExamModeMode = "Modo"
ExamModeModeStandard = "Estándar "
ExamModeModeNoSym = "Sin simbólico "
ExamModeModeNoSymNoText = "Sin simbólico sin texto "
ExamModeModeDutch = "Holandés "

View File

@@ -3,86 +3,99 @@ ActivateExamMode = "A vizsgálati mód aktiválása"
ActivateDutchExamMode = "A holland vizsga mód aktiválása"
ActiveExamModeMessage1 = "Az összes adatod"
ActiveExamModeMessage2 = "törölve lesz ha"
ActiveExamModeMessage3 = "aktiválod a vizsga módot."
ActiveDutchExamModeMessage1 = "Az összes adat törlödik, amikor"
ActiveDutchExamModeMessage2 = "aktiválod a vizsga módot. A Python "
ActiveDutchExamModeMessage3 = "alkalmazás nem lesz elérhetö."
Axis = "Tengely"
ActiveExamModeMessage3 = "a vizsga módot aktiválja."
ActiveDutchExamModeMessage1 = "Az összes adatod törölve lesz"
ActiveDutchExamModeMessage2 = "ha a vizsga módot aktiválja. A"
ActiveDutchExamModeMessage3 = "Python alkalmazás használhatatlan lesz."
Axis = "Tengelyek"
Cancel = "Mégse"
ClearColumn = "Oszlop törlése"
ColumnOptions = "Oszlop opciók"
CopyColumnInList = "Az oszlop exportálása egy listába"
DataNotSuitable = "Az adatok nem megfelelöek"
DataTab = "Data"
DefaultSetting = "Alapbeállítások"
ConfirmDiscard1 = "Minden változtatást elvetünk"
ConfirmDiscard2 = ""
CopyColumnInList = "Az oszlopot egy listába másolni"
Country = "Ország"
CountryCA = "Kanada "
CountryDE = "Németország "
CountryES = "Spanyolország "
CountryFR = "Franciaország "
CountryGB = "Egyesült Királyság "
CountryIT = "Olaszország "
CountryNL = "Hollandia "
CountryPT = "Portugália "
CountryUS = "Egyesült Államok "
CountryWW = "Nemzetközi "
CountryWarning1 = "Ez a beállítás meghatározza az"
CountryWarning2 = "alkalmazott tematikus konvenciókat."
DataNotSuitable = "Az adatok nem felelnek meg"
DataTab = "Adatok"
Deg = "deg"
Deviation = "Varianca"
DisplayValues = "Értékek mutatása"
Empty = "Üres"
Eng = "eng"
ExitExamMode1 = "Kilépés a vizsga "
ExitExamMode1 = "Kilépni a vizsga "
ExitExamMode2 = "módból?"
Exponential = "Exponenciális"
FillWithFormula = "Töltse ki egy képlettel"
ForbiddenValue = "Tiltott érték"
FunctionColumn = "0 (0) oszlop"
FunctionColumn = "0(0) oszlop"
FunctionOptions = "Funkció opciók"
Goto = "Menj ide"
Goto = "Menj ..."
GraphTab = "Grafikon"
HardwareTestLaunch1 = "Ön elindítja a hardvert"
HardwareTestLaunch2 = " tesztet. A teszt végén neked"
HardwareTestLaunch3 = "kell vissza állítani az eszközt,és"
HardwareTestLaunch4 = "az összes adat törlödni fog."
Initialization = "Elöbeállítás"
HardwareTestLaunch1 = "A hardverteszt indítása :"
HardwareTestLaunch2 = "Nyomjon a reset gombra a"
HardwareTestLaunch3 = "teszt megállításához (ez"
HardwareTestLaunch4 = "az adatokat törölni fogja)"
IntervalSet = "Állítsa be az intervallumot"
Language = "Nyelv"
LowBattery = "Alacsony töltöttség"
LowBattery = "Majdnem kimerült az elem"
Mean = "középérték"
Move = " Move: "
Move = " Odébb rakni: "
NameCannotStartWithNumber = "Egy név nem kezdöthet számmal"
NameTaken = "Ez a név foglalt"
NameTooLong = "Ez a név túl hosszú"
Navigate = "Hajózik"
Next = "következö"
NEnd = "N vége"
NoDataToPlot = "Nincs rajzolható adat"
NoFunctionToDelete = "Nincs törölhetö függvény"
NoValueToCompute = "Nincs számítható érték"
NEnd = "N vége"
NStart = "N kezdete"
Ok = "Megerösítés"
Ok = "Érvényesítés"
Or = " vagy "
Orthonormal = "Ortonormál"
Plot = "Grafikon elkészítése"
Orthonormal = "Ortonormált"
Plot = "Grafikon rajzolása"
PoolMemoryFull1 = "A memória megtelt."
PoolMemoryFull2 = "Kérem próbálja újra."
Rad = "rad"
Rename = "Átnevezés"
RoundAbscissa = "Egész szám"
Sci = "sci"
SortValues = "Rendezés értékek növelésével"
SortSizes = "Rendezés növekvő frekvenciák szerint"
SquareSum = "Négyzetek összege"
StandardDeviation = "Alap eltérés"
StoreExpressionNotAllowed = "'tárolás' nem engedélyezett"
StatTab = "Statisztikák"
Step = "Lépés"
StorageMemoryFull1 = "A memória megtelt."
StorageMemoryFull2 = "Adatok törlése és próbálkozzon újra."
StorageMemoryFull2 = "Törlöljön adatokat és próbálkozzon újra."
StoreExpressionNotAllowed = "'szore' nem engedélyezett"
SyntaxError = "Szintaxis hiba"
Sym = "sym"
TEnd = "T vég"
ThetaEnd = "θ vége"
ThetaStart = "θ kezdete"
TStart = "T kezdete"
ToZoom = "Zoom:"
Trigonometric = "Trigonometrikus"
UndefinedValue = "Nincs meghatározva érték"
ToZoom = "Nagyítani : "
UndefinedValue = "Meghatározatlan adat"
ValuesTab = "Táblázat"
Warning = "Figyelem"
XEnd = "X vége"
XStart = "X kezdete"
Zoom = "Zoom"
Developers = "Fejlesztök"
Zoom = "Nagyítás"
Developers = "Kifejlesztök"
BetaTesters = "Béta tesztelök"
ExamModeMode = "Üzemmód"
ExamModeModeStandard = "Normál"
ExamModeModeNoSym = "Nincs sym"
ExamModeModeNoSymNoText = "Nincs szimbolikus, nincs szöveg "
ExamModeModeStandard = "Normál "
ExamModeModeNoSym = "Szimbólikus nélkül "
ExamModeModeNoSymNoText = "Szimbólikus és szöveg nélkül "
ExamModeModeDutch = "Holland "

View File

@@ -94,3 +94,8 @@ XStart = "X iniziale"
Zoom = "Zoom"
Developers = "Developers"
BetaTesters = "Beta testers"
ExamModeMode = "Modalità"
ExamModeModeStandard = "Standard "
ExamModeModeNoSym = "Nessun simbolo "
ExamModeModeNoSymNoText = "Nessun simbolo nessun testo "
ExamModeModeDutch = "Olandese "

View File

@@ -94,3 +94,8 @@ XStart = "X begin"
Zoom = "Zoom"
Developers = "Developers"
BetaTesters = "Beta testers"
ExamModeMode = "Mode"
ExamModeModeStandard = "Standaard "
ExamModeModeNoSym = "Geen sym "
ExamModeModeNoSymNoText = "Geen sym geen tekst "
ExamModeModeDutch = "Nederlands "

View File

@@ -94,3 +94,8 @@ XStart = "X início"
Zoom = "Zoom"
Developers = "Desenvolvedores"
BetaTesters = "Testadores beta"
ExamModeMode = "Modo"
ExamModeModeStandard = "Padrão "
ExamModeModeNoSym = "Sem sym "
ExamModeModeNoSymNoText = "Sem sym sem texto "
ExamModeModeDutch = "holandês "

View File

@@ -134,6 +134,7 @@ GcdCommandWithArg = "gcd(p,q)"
Gon = "gon"
ImCommandWithArg = "im(z)"
IndentityCommandWithArg = "identity(n)"
Infinity = "infinity"
IntCommand = "int(\x11,x,\x11,\x11)"
IntCommandWithArg = "int(f(x),x,a,b)"
InvBinomialCommandWithArg = "invbinom(a,n,p)"

View File

@@ -1,29 +1,29 @@
SolverApp = "Egyenletek"
SolverAppCapital = "Egyenletek"
AddEquation = "Egyenlet hozzáadása"
ResolveEquation = "Oldja meg az egyenletet"
ResolveSystem = "A rendszer megoldása"
SolverAppCapital = "EGYENLETEK"
AddEquation = "Egyenlet hozzáadás"
ResolveEquation = "Egyenletet megoldása"
ResolveSystem = "Rendszer megoldása"
UseEquationModel = "Használjon egyenleti sablont"
RequireEquation = "A bemenetnek egyenletnek kell lennie"
UnrealEquation = "Unreal egyenlet"
UndefinedEquation = "Definiálatlan egyenlet"
TooManyVariables = "Túl sok ismeretlen"
RequireEquation = "A bemenetnek csak egyenlet lehet"
UnrealEquation = "Irreális egyenlet"
UndefinedEquation = "Egy egyenlet meghatározatlan "
TooManyVariables = "Túl sok ismeretlen van"
NonLinearSystem = "A rendszer nem lineáris"
Solution = "Megoldás"
ApproximateSolution = "Hozzávetöleges megoldás"
SearchInverval = "Keresési intervallum"
NoSolutionSystem = "A rendszernek nincs megoldása"
NoSolutionEquation = "Az egyenletnek nincs megoldása"
NoSolutionInterval = "Nem találtunk megoldást az intervallumban"
EnterEquation = "Írja be az egyenletet"
InfiniteNumberOfSolutions = "Végtelen számú megoldás létezik"
ApproximateSolutionIntervalInstruction0 = "Adja meg a keresés intervallumát"
ApproximateSolutionIntervalInstruction1 = "egy hozzávetöleges megoldáshoz"
OnlyFirstSolutionsDisplayed0 = "Csak az elsö 10 megoldás"
OnlyFirstSolutionsDisplayed1 = "megjelenik"
NoSolutionInterval = "Nincs megoldás ebben az intervallumban"
EnterEquation = "Írjon be egy egyenletet"
InfiniteNumberOfSolutions = "Végtelen menyi megoldások léteznek"
ApproximateSolutionIntervalInstruction0 = "Irja be a keresés intervallumot"
ApproximateSolutionIntervalInstruction1 = "amelyikbe egy hozzávetöleges megoldást keressen"
OnlyFirstSolutionsDisplayed0 = "Csak a 10 elsö megoldások"
OnlyFirstSolutionsDisplayed1 = "jelennek meg"
PolynomeHasNoRealSolution0 = "A polinomnak nincs"
PolynomeHasNoRealSolution1 = "valódi gyökére"
PredefinedVariablesUsedLeft = "Használt"
PredefinedVariablesUsedRight = "elöre definiált változók"
PredefinedVariablesIgnoredLeft = "mellözött"
PredefinedVariablesIgnoredRight = "elöre definiált változók"
PredefinedVariablesUsedLeft = "Alkalmazott elöre-"
PredefinedVariablesUsedRight = "meghatározott változók"
PredefinedVariablesIgnoredLeft = "Mellözött"
PredefinedVariablesIgnoredRight = "elöre-meghatározott változók"

View File

@@ -24,4 +24,4 @@ StandardDeviationSigma = "Standard deviation σ"
SampleStandardDeviationS = "Sample std deviation s"
SumValues = "Sum of values"
SumSquareValues = "Sum of squared values"
InterquartileRange = "Interquartile range"
InterquartileRange = "Interquartile range"

View File

@@ -5,21 +5,23 @@ BoxTab = "Doboz"
Values1 = "V1 értékek"
Values2 = "V2 értékek"
Values3 = "V3 értékek"
Sizes1 = "N1 méret"
Sizes2 = "N2 méret"
Sizes3 = "N3 méret"
Frequencies1 = "N1 Frekvencia"
Frequencies2 = "N2 Frekvencia"
Frequencies3 = "N3 Frekvencia"
ImportList = "Importálás egy listáról"
Interval = "Intervallum"
Size = "Méret"
Frequency = "Frekvencia"
Frequency = "Frekvencia:"
RelativeFrequency = "Relatív:"
HistogramSet = "Hisztogram beállítások"
RectangleWidth = "Tálca szélessége"
BarStart = "X kezdet"
FirstQuartile = "Elsö kvartilis"
Median = "Medián"
ThirdQuartile = "Harmadik kvartilis"
TotalSize = "Teljes méret"
TotalFrequency = "Adatpontok száma "
Range = "Intervallum"
StandardDeviationSigma = "σ szórás"
SampleStandardDeviationS = "Minta std eltérés s"
SampleStandardDeviationS = "Minta std eltérés σ"
SumValues = "Értékek összege"
SumSquareValues = "Négyzetértékek összege"
InterquartileRange = "Interkvartilis tartomány"

View File

@@ -21,6 +21,7 @@ UnitDistanceMeterNano = "Nanometer"
UnitDistanceMeterPico = "Pikometer"
UnitDistanceAstronomicalUnit = "Astronomische Einheit"
UnitDistanceLightYear = "Lichtjahr"
UnitDistanceParsec = "Parsec"
UnitDistanceMile = "Meile"
UnitDistanceYard = "Yard"
UnitDistanceFoot = "Fuß"
@@ -109,6 +110,7 @@ Identity = "Einheitsmatrix der Größe n"
Lists = "Listen"
HyperbolicTrigonometry = "Hyperbelfunktionen"
Fluctuation = "Konfidenzintervall"
InfinityMessage = "Unendlich"
DerivateNumber = "Ableitung"
Integral = "Integral"
Sum = "Summe"

View File

@@ -110,6 +110,7 @@ Identity = "Identity matrix of size n"
Lists = "List"
HyperbolicTrigonometry = "Hyperbolic trigonometry"
Fluctuation = "Prediction Interval"
InfinityMessage = "Infinity"
DerivateNumber = "Derivative"
Integral = "Integral"
Sum = "Sum"

View File

@@ -22,6 +22,8 @@ UnitDistanceMeterPico = "Picometer"
UnitDistanceImperialMenu = "US Customary"
UnitDistanceAstronomicalUnit = "Astronomical unit"
UnitDistanceLightYear = "Light year"
UnitDistanceParsec = "Parsec"
UnitMassImperialMenu = "US Customary"
UnitDistanceMile = "Milla"
UnitDistanceYard = "Yardas"
UnitDistanceFoot = "Pie"
@@ -108,6 +110,7 @@ Identity = "Matriz identidad de tamaño n"
Lists = "Listas"
HyperbolicTrigonometry = "Trigonometría hiperbólica"
Fluctuation = "Interval de predicción"
InfinityMessage = "Infinito"
DerivateNumber = "Derivada"
Integral = "Integral"
Sum = "Suma"

View File

@@ -114,6 +114,7 @@ Identity = "Matrice identité de taille n"
Lists = "Listes"
HyperbolicTrigonometry = "Trigonométrie hyperbolique"
Fluctuation = "Intervalle de fluctuation"
InfinityMessage = "Infini"
DerivateNumber = "Nombre derivé de f en a"
Integral = "Intégrale de f sur [a;b]"
Sum = "Somme"

View File

@@ -27,6 +27,8 @@ UnitDistanceMile = "Mérföld"
UnitDistanceAstronomicalUnit = "Csillagászati egység"
UnitDistanceLightYear = "Fény év"
UnitDistanceParsec = "Parsec"
UnitMassShortTon = "Rövid tonna"
UnitMassLongTon = "Hosszú tonna"
UnitMassImperialMenu = "Angolszász mértékegységek"
UnitMassPound = "Font"
UnitMassOunce = "Uncia"
@@ -42,31 +44,19 @@ UnitCurrentAmpere = "Amper"
UnitCurrentAmpereMilli = "Milliamper"
UnitCurrentAmpereMicro = "Mikroamper"
UnitTemperatureMenu = "Hömérséklet"
UnitTemperatureKelvin = "Kelvin"
UnitAmountMenu = "Az anyag mennyisége"
UnitAmountMole = "Mól"
UnitAmountMoleMilli = "Millimól"
UnitAmountMoleMicro = "Mikromól"
UnitLuminousIntensityMenu = "Fényerö"
UnitLuminousIntensityCandela = "Candela"
UnitFrequencyMenu = "Frekvencia"
UnitFrequencyHertzGiga = "Gigahertz"
UnitFrequencyHertzMega = "Megahertz"
UnitFrequencyHertzKilo = "Kilohertz"
UnitFrequencyHertz = "Hertz"
UnitForceMenu = "Erö"
UnitForceNewtonKilo = "Kilonewton"
UnitForceNewton = "Newton"
UnitForceNewtonMilli = "Millinewton"
UnitPressureMenu = "Nyomás"
UnitPressurePascal = "Pascal"
UnitPressurePascalHecto = "Hectopascal"
UnitPressureBar = "Bár"
UnitPressureAtm = "Légkör"
UnitEnergyMenu = "Energia"
UnitEnergyJouleMenu = "Joule"
UnitEnergyJouleKilo = "Kilojoule"
UnitEnergyJoule = "Joule"
UnitEnergyJouleMilli = "Millijoule"
UnitEnergyEletronVoltMenu = "Electronvolt"
UnitEnergyElectronVoltMega = "Megaelectronvolt"
@@ -74,40 +64,38 @@ UnitEnergyElectronVoltKilo = "Kiloelectronvolt"
UnitEnergyElectronVolt = "Electronvolt"
UnitEnergyElectronVoltMilli = "Millielectronvolt"
UnitPowerMenu = "Teljesítmény"
UnitPowerWattGiga = "Gigawatt"
UnitPowerWattMega = "Megawatt"
UnitPowerWattKilo = "Kilowatt"
UnitPowerWatt = "Watt"
UnitPowerWattMilli = "Milliwatt"
UnitPowerWattMicro = "Microwatt"
UnitElectricChargeMenu = "Elektromos töltés"
UnitChargeCoulomb = "Coulomb"
UnitPotentialMenu = "Elektromos potenciál"
UnitPotentialVoltKilo = "Kilovolt"
UnitPotentialVolt = "Volt"
UnitPotentialVoltMilli = "Millivolt"
UnitPotentialVoltMicro = "Microvolt"
UnitCapacitanceMenu = "Elektromos kapacitás"
UnitCapacitanceFarad = "Farad"
UnitCapacitanceFaradMilli = "Millifarad"
UnitCapacitanceFaradMicro = "Microfarad"
UnitResistanceMenu = "Elektromos ellenállás"
UnitResistanceOhmKilo = "Kiloohm"
UnitResistanceOhm = "Ohm"
UnitConductanceMenu = "Elektromos vezetöképesség"
UnitConductanceSiemens = "Siemens"
UnitConductanceSiemensMilli = "Millisiemens"
UnitMagneticFieldMenu = "Mágneses mezö"
UnitMagneticFieldTesla = "Tesla"
InductanceMenu = "Elektromos induktivitás"
UnitInductanceHenry = "Henry"
UnitSurfaceMenu = "Terület"
UnitSurfaceAcre = "Acre"
UnitSurfaceHectar = "Hektár"
UnitVolumeMenu = "Kötet"
UnitVolumeLiter = "Liter"
UnitVolumeLiterDeci = "Deciliter"
UnitVolumeLiterCenti = "Centiliter"
UnitVolumeLiterMilli = "Milliliter"
UnitVolumeTeaspoon = "Teáskanál"
UnitVolumeTablespoon = "evőkanál"
UnitVolumeFluidOunce = "Folyadék uncia"
UnitVolumeCup = "Kupa"
UnitVolumePint = "Pint"
UnitVolumeQuart = "Quart"
UnitVolumeGallon = "Gallon"
UnitMetricMenu = "Metrikus"
UnitImperialMenu = "Birodalmi"
Toolbox = "Eszköztár"
AbsoluteValue = "Abszolút érték"
NthRoot = "n-gyökér"
@@ -122,6 +110,7 @@ Identity = "n méretü azonosító mátrix"
Lists = "Lista"
HyperbolicTrigonometry = "Hiperbolikus trigonometria"
Fluctuation = "Jósolt intervallum"
InfinityMessage = "Végtelen"
DerivateNumber = "Származékos"
Integral = "Integral"
Sum = "Összeg"
@@ -142,6 +131,12 @@ Determinant = "determináns"
Transpose = "Átültetés"
Trace = "Trace"
Dimension = "Méret"
RowEchelonForm = "Sor echelon forma"
ReducedRowEchelonForm = "Csökkentett sorú echelon forma"
Vectors = "Vektorok"
Dot = "Pont termék"
Cross = "Kereszt termék"
NormVector = "Norm"
Sort = "Növekvö sorrend"
InvSort = "Csökkenö rendezés"
Maximum = "Maximum"

View File

@@ -110,6 +110,7 @@ Identity = "Matrice identità di dimensione n"
Lists = "Elenchi"
HyperbolicTrigonometry = "Funzioni iperboliche"
Fluctuation = "Intervallo di previsione"
InfinityMessage = "Infinito"
DerivateNumber = "Derivata"
Integral = "Integrale"
Sum = "Somma"

View File

@@ -110,6 +110,7 @@ Identity = "Eenheidsmatrix van formaat n"
Lists = "Lijst"
HyperbolicTrigonometry = "Hyperbolische functies"
Fluctuation = "Statistische intervallen"
InfinityMessage = "Eindeloos"
DerivateNumber = "Afgeleide"
Integral = "Integraal"
Sum = "Som"

View File

@@ -110,6 +110,7 @@ Identity = "Matriz identidade de ordem n"
Lists = "Listas"
HyperbolicTrigonometry = "Funções hiperbólicas"
Fluctuation = "Intervalo de confiança"
InfinityMessage = "Infinito"
DerivateNumber = "Derivada"
Integral = "Integral"
Sum = "Somatório"

View File

@@ -1,7 +1,7 @@
USBConnected = "A SZÁMOLÓGÉP CSATLAKOZTATVA VAN"
ConnectedMessage1 = "Az adatok átviteléhez keresse meg az"
ConnectedMessage2 = "oldalunkat a számítógépröl"
ConnectedMessage3 = "workshop.numworks.com"
ConnectedMessage4 = "Nyomja meg a készülék BACK gombját"
ConnectedMessage5 = "vagy húzza ki hogy"
ConnectedMessage6 = "lecsatlakozzon"
ConnectedMessage1 = ""
ConnectedMessage2 = "Adat másolásához csatlakozzon"
ConnectedMessage3 = "fel workshop.numworks.com ra."
ConnectedMessage4 = "Nyomjon majd a VISSZA gombra"
ConnectedMessage5 = "vagy huzza ki a kábelt azért"
ConnectedMessage6 = "hogy a másolás véget érjen."

View File

@@ -1,10 +1,13 @@
Variables = "Változók"
Expressions = "Kifejezések"
Functions = "Függvények"
EmptyExpressionBox0 = "Nem határozott meg egyetlen változót sem."
EmptyFunctionBox0 = "Nem határozott meg egyetlen függvényt sem."
Functions = "Funciók"
Sequences = "Szekvenciák"
EmptyExpressionBox0 = "Nincs meghatározott változó."
EmptyFunctionBox0 = "Nincs meghatározott funkció."
EmptySequenceBox0 = "Még nem definiált szekvenciákat."
EmptyExpressionBox1 = "A változó meghatározásához írja be:"
EmptyFunctionBox1 = "Függvény meghatározásához írja be:"
EmptyExpressionBox2 = "A változó neve tartalmazhatja:"
EmptyFunctionBox2 = "A függvény neve tartalmazhatja:"
EmptyFunctionBox1 = "Funkció meghatározásához írja be:"
EmptySequenceBox1 = ""
EmptyExpressionBox2 = "A változó neve tartalmazhat:"
EmptyFunctionBox2 = "A funkció neve tartalmazhat:"
EnableCharacters = "A..Z, a..z, 0..9 és _"

View File

@@ -7,9 +7,10 @@ HOME_DISPLAY_EXTERNALS ?= 1
EPSILON_VERSION ?= 15.3.1
OMEGA_VERSION ?= 1.21.0
# OMEGA_USERNAME ?= N/A
OMEGA_STATE ?= dev
OMEGA_STATE ?= public
EPSILON_APPS ?= calculation rpn graph code statistics probability solver atom sequence regression settings external
EPSILON_I18N ?= en fr
SUBMODULES_APPS = atom rpn
EPSILON_I18N ?= en fr nl pt it de es hu
EPSILON_COUNTRIES ?= WW CA DE ES FR GB IT NL PT US
EPSILON_GETOPT ?= 0
EPSILON_TELEMETRY ?= 0

View File

@@ -1,5 +1,5 @@
TOOLCHAIN = devkitarm
EXE = elf
HANDY_TARGETS_EXTENSIONS = 3dsx
HANDY_TARGETS_EXTENSIONS = 3dsx cia

View File

@@ -13,7 +13,7 @@ $(BUILD_DIR)/test.external_flash.write.$(EXE): $(BUILD_DIR)/quiz/src/test_ion_ex
@echo " button on the back of your device."
$(Q) until $(PYTHON) build/device/dfu.py -l | grep -E "0483:a291|0483:df11" > /dev/null 2>&1; do sleep 2;done
$(eval DFU_SLAVE := $(shell $(PYTHON) build/device/dfu.py -l | grep -E "0483:a291|0483:df11"))
$(Q) if [[ "$(DFU_SLAVE)" == *"0483:df11"* ]]; \
$(Q) if expr "$(DFU_SLAVE)" : ".*0483:df11.*" > /dev/null; \
then \
$(PYTHON) build/device/dfu.py -u $(word 2,$^); \
sleep 2; \

View File

@@ -1,9 +1,23 @@
%.smdh: ion/src/simulator/3ds/assets/logo.png
$(Q) echo "SMDH $(notdir $@)"
$(Q) smdhtool --create "Epsilon" "A Numworks in your 3DS!" "Numworks" ion/src/simulator/3ds/assets/logo.png $@
$(Q) smdhtool --create "Epsilon" "A Numworks in your 3DS!" "Numworks" $< $@
$(BUILD_DIR)/%.3dsx: $(BUILD_DIR)/%.elf $(BUILD_DIR)/%.smdh
$(Q) echo "3DSX $(notdir $@)"
$(Q) 3dsxtool $< $@ --smdh=$(word 2,$^)
cia_version_tuple := $(subst ., ,$(OMEGA_VERSION))
cia_version_major := $(word 1,$(cia_version_tuple))
cia_version_minor := $(word 2,$(cia_version_tuple))
cia_version_micro := $(word 3,$(cia_version_tuple))
$(BUILD_DIR)/%.cxi: $(BUILD_DIR)/%.elf ion/src/simulator/3ds/assets/app.rsf ion/src/simulator/3ds/assets/banner.bnr ion/src/simulator/3ds/assets/icon.icn
$(Q) echo "CXI $(notdir $@)"
$(Q) makerom -o $@ -rsf ion/src/simulator/3ds/assets/app.rsf -target t -elf $< -icon ion/src/simulator/3ds/assets/icon.icn -banner ion/src/simulator/3ds/assets/banner.bnr -desc app:4
$(BUILD_DIR)/%.cia: $(BUILD_DIR)/%.cxi
$(Q) echo "CIA $(notdir $@)"
$(Q) makerom -f cia -o $@ -target t -i $<:0:0

View File

@@ -8,9 +8,12 @@ class ImageView : public View {
public:
ImageView();
void setImage(const Image * image);
void setImage(const uint8_t *data, size_t dataLength);
void drawRect(KDContext * ctx, KDRect rect) const override;
private:
const Image * m_image;
const uint8_t * m_data;
size_t m_dataLength;
};
#endif

View File

@@ -6,7 +6,9 @@ extern "C" {
ImageView::ImageView() :
View(),
m_image(nullptr)
m_image(nullptr),
m_data(nullptr),
m_dataLength(0)
{
}
@@ -15,27 +17,50 @@ constexpr static int maxPixelBufferSize = 4000;
// Boot logo file is 188 x 21 = 3948
void ImageView::drawRect(KDContext * ctx, KDRect rect) const {
if (m_image == nullptr) {
const uint8_t* data;
size_t size;
size_t pixelBufferSize;
if (m_image != nullptr) {
assert(bounds().width() == m_image->width());
assert(bounds().height() == m_image->height());
data = m_image->compressedPixelData();
size = m_image->compressedPixelDataSize();
pixelBufferSize = m_image->width() * m_image->height();
} else if (m_data != nullptr) {
data = m_data;
size = m_dataLength;
// We assume the external images are made properly.
// TODO: Maybe we shouldn't...
pixelBufferSize = bounds().width() * bounds().height();
} else {
return;
}
assert(bounds().width() == m_image->width());
assert(bounds().height() == m_image->height());
KDColor pixelBuffer[maxPixelBufferSize];
int pixelBufferSize = m_image->width() * m_image->height();
assert(pixelBufferSize <= maxPixelBufferSize);
assert(Ion::stackSafe()); // That's a VERY big buffer we're allocating on the stack
Ion::decompress(
m_image->compressedPixelData(),
data,
reinterpret_cast<uint8_t *>(pixelBuffer),
m_image->compressedPixelDataSize(),
size,
pixelBufferSize * sizeof(KDColor)
);
ctx->fillRectWithPixels(bounds(), pixelBuffer, nullptr);
}
void ImageView::setImage(const uint8_t *data, size_t dataLength) {
if (data != m_data && dataLength != m_dataLength) {
m_data = data;
m_dataLength = dataLength;
markRectAsDirty(bounds());
}
}
void ImageView::setImage(const Image * image) {
if (image != m_image) {
m_image = image;

View File

@@ -66,5 +66,6 @@ static constexpr CodePoint UCodePointNArySummation = 0x2211; // ∑
static constexpr CodePoint UCodePointSquareRoot = 0x221a; // √
static constexpr CodePoint UCodePointIntegral = 0x222b; // ∫
static constexpr CodePoint UCodePointMathematicalBoldSmallI = 0x1d422; // 𝐢
static constexpr CodePoint UCodePointInfinity = 0x221e; // ∞
#endif

View File

@@ -2,11 +2,13 @@
ion_src += $(addprefix ion/src/simulator/3ds/, \
main.cpp \
callback.cpp \
clipboard.cpp \
display.cpp \
framebuffer.cpp \
telemetry_init.cpp \
keyboard.cpp \
events_keyboard.cpp \
events.cpp \
driver/display.cpp \
driver/language.cpp \
driver/led.cpp \
@@ -22,8 +24,10 @@ sdl_simu_needs_to_be_removed += $(addprefix ion/src/simulator/shared/, \
dummy/led.cpp \
dummy/usb.cpp \
dummy/battery.cpp \
clipboard.cpp \
display.cpp:-headless \
events_keyboard.cpp:-headless \
events.cpp \
framebuffer_base.cpp \
keyboard_sdl.cpp:-headless \
main_sdl.cpp:-headless \

View File

@@ -0,0 +1,224 @@
BasicInfo:
Title : Omega
CompanyCode : "00"
ProductCode : CTR-E-OMEGA
Logo : Homebrew # Nintendo / Licensed / Distributed / iQue / iQueForSystem
RomFs:
# Specifies the root path of the read only file system to include in the ROM.
#RootPath : romfs
TitleInfo:
Category : Application
UniqueId : 0x069420
Option:
UseOnSD : true # true if App is to be installed to SD
FreeProductCode : true # Removes limitations on ProductCode
MediaFootPadding : false # If true CCI files are created with padding
EnableCrypt : false # Enables encryption for NCCH and CIA
EnableCompress : true # Compresses where applicable (currently only exefs:/.code)
AccessControlInfo:
CoreVersion : 2
# Exheader Format Version
DescVersion : 2
# Minimum Required Kernel Version (below is for 4.5.0)
ReleaseKernelMajor : "02"
ReleaseKernelMinor : "33"
# ExtData
UseExtSaveData : false # enables ExtData
#ExtSaveDataId : 0x300 # only set this when the ID is different to the UniqueId
# FS:USER Archive Access Permissions
# Uncomment as required
FileSystemAccess:
#- CategorySystemApplication
#- CategoryHardwareCheck
#- CategoryFileSystemTool
#- Debug
#- TwlCardBackup
#- TwlNandData
#- Boss
- DirectSdmc
#- Core
#- CtrNandRo
#- CtrNandRw
#- CtrNandRoWrite
#- CategorySystemSettings
#- CardBoard
#- ExportImportIvs
#- DirectSdmcWrite
#- SwitchCleanup
#- SaveDataMove
#- Shop
#- Shell
#- CategoryHomeMenu
# Process Settings
MemoryType : Application # Application/System/Base
SystemMode : 64MB # 64MB(Default)/96MB/80MB/72MB/32MB
IdealProcessor : 0
AffinityMask : 1
Priority : 16
MaxCpu : 0 # Let system decide
HandleTableSize : 0x200
DisableDebug : false
EnableForceDebug : false
CanWriteSharedPage : true
CanUsePrivilegedPriority : false
CanUseNonAlphabetAndNumber : true
PermitMainFunctionArgument : true
CanShareDeviceMemory : true
RunnableOnSleep : false
SpecialMemoryArrange : true
# New3DS Exclusive Process Settings
SystemModeExt : Legacy # Legacy(Default)/124MB/178MB Legacy:Use Old3DS SystemMode
CpuSpeed : 268MHz # 268MHz(Default)/804MHz
EnableL2Cache : false # false(default)/true
CanAccessCore2 : false
# Virtual Address Mappings
IORegisterMapping:
- 1ff00000-1ff7ffff # DSP memory
MemoryMapping:
- 1f000000-1f5fffff:r # VRAM
# Accessible SVCs, <Name>:<ID>
SystemCallAccess:
ArbitrateAddress: 34
Break: 60
CancelTimer: 28
ClearEvent: 25
ClearTimer: 29
CloseHandle: 35
ConnectToPort: 45
ControlMemory: 1
CreateAddressArbiter: 33
CreateEvent: 23
CreateMemoryBlock: 30
CreateMutex: 19
CreateSemaphore: 21
CreateThread: 8
CreateTimer: 26
DuplicateHandle: 39
ExitProcess: 3
ExitThread: 9
GetCurrentProcessorNumber: 17
GetHandleInfo: 41
GetProcessId: 53
GetProcessIdOfThread: 54
GetProcessIdealProcessor: 6
GetProcessInfo: 43
GetResourceLimit: 56
GetResourceLimitCurrentValues: 58
GetResourceLimitLimitValues: 57
GetSystemInfo: 42
GetSystemTick: 40
GetThreadContext: 59
GetThreadId: 55
GetThreadIdealProcessor: 15
GetThreadInfo: 44
GetThreadPriority: 11
MapMemoryBlock: 31
OutputDebugString: 61
QueryMemory: 2
ReleaseMutex: 20
ReleaseSemaphore: 22
SendSyncRequest1: 46
SendSyncRequest2: 47
SendSyncRequest3: 48
SendSyncRequest4: 49
SendSyncRequest: 50
SetThreadPriority: 12
SetTimer: 27
SignalEvent: 24
SleepThread: 10
UnmapMemoryBlock: 32
WaitSynchronization1: 36
WaitSynchronizationN: 37
Backdoor: 123
# Service List
# Maximum 34 services (32 if firmware is prior to 9.3.0)
ServiceAccessControl:
- cfg:u
- fs:USER
- gsp::Gpu
- hid:USER
- ndm:u
- pxi:dev
- APT:U
- ac:u
- act:u
- am:net
- boss:U
- cam:u
- cecd:u
- csnd:SND
- frd:u
- http:C
- ir:USER
- ir:u
- ir:rst
- ldr:ro
- mic:u
- news:u
- nfc:u
- nim:aoc
- nwm::UDS
- ptm:u
- qtm:u
- soc:U
- ssl:C
- y2r:u
SystemControlInfo:
SaveDataSize: 0K
RemasterVersion: 0
StackSize: 0x40000
# Modules that run services listed above should be included below
# Maximum 48 dependencies
# If a module is listed that isn't present on the 3DS, the title will get stuck at the logo (3ds waves)
# So act, nfc and qtm are commented for 4.x support. Uncomment if you need these.
# <module name>:<module titleid>
Dependency:
ac: 0x0004013000002402
#act: 0x0004013000003802
am: 0x0004013000001502
boss: 0x0004013000003402
camera: 0x0004013000001602
cecd: 0x0004013000002602
cfg: 0x0004013000001702
codec: 0x0004013000001802
csnd: 0x0004013000002702
dlp: 0x0004013000002802
dsp: 0x0004013000001a02
friends: 0x0004013000003202
gpio: 0x0004013000001b02
gsp: 0x0004013000001c02
hid: 0x0004013000001d02
http: 0x0004013000002902
i2c: 0x0004013000001e02
ir: 0x0004013000003302
mcu: 0x0004013000001f02
mic: 0x0004013000002002
ndm: 0x0004013000002b02
news: 0x0004013000003502
#nfc: 0x0004013000004002
nim: 0x0004013000002c02
nwm: 0x0004013000002d02
pdn: 0x0004013000002102
ps: 0x0004013000003102
ptm: 0x0004013000002202
#qtm: 0x0004013020004202
ro: 0x0004013000003702
socket: 0x0004013000002e02
spi: 0x0004013000002302
ssl: 0x0004013000002f02

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@@ -0,0 +1,18 @@
#include <ion/clipboard.h>
#include <ion.h>
#include <string.h>
namespace Ion {
namespace Clipboard {
uint32_t localClipboardVersion;
void write(const char * text) {
}
const char * read() {
return nullptr;
}
}
}

View File

@@ -13,7 +13,7 @@ bool Ion::USB::isEnumerated() {
void Ion::USB::clearEnumerationInterrupt() {
}
void Ion::USB::DFU() {
void Ion::USB::DFU(bool) {
}
void Ion::USB::enable() {

View File

@@ -0,0 +1,23 @@
#include "events.h"
#include <ion/events.h>
namespace Ion {
namespace Events {
void didPressNewKey() {
}
char * sharedExternalTextBuffer() {
static char buffer[sharedExternalTextBufferSize];
return buffer;
}
const char * Event::text() const {
if (*this == ExternalText) {
return const_cast<const char *>(sharedExternalTextBuffer());
}
return defaultText();
}
}
}

View File

@@ -0,0 +1,24 @@
#ifndef ION_SIMULATOR_EVENTS_H
#define ION_SIMULATOR_EVENTS_H
#include <ion/events.h>
namespace Ion {
namespace Simulator {
namespace Events {
void dumpEventCount(int i);
void logAfter(int numberOfEvents);
}
}
namespace Events {
static constexpr int sharedExternalTextBufferSize = 0;
char * sharedExternalTextBuffer();
}
}
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -37,7 +37,7 @@ endif
SIMULATOR_ICONS = $(addprefix $(SIMULATOR_ICONSET)/,$(addsuffix .png,$(addprefix icon_, $(SIMULATOR_ICON_SIZES))))
$(addprefix $(SIMULATOR_ICONSET)/,icon_%.png): ion/src/simulator/assets/logo.svg | $$(@D)/.
$(addprefix $(SIMULATOR_ICONSET)/,icon_%.png): ion/src/simulator/assets/logoMacOS.png | $$(@D)/.
$(call rule_label,CONVERT)
$(Q) convert -background "#FFB734" -resize $* $< $@

View File

@@ -201,9 +201,9 @@
#ifndef SDL_VIDEO_DISABLED
// #define SDL_VIDEO_DRIVER_DUMMY 1
#define SDL_VIDEO_DRIVER_EMSCRIPTEN 1
#define SDL_VIDEO_RENDER_OGL_ES2 1
#define SDL_VIDEO_OPENGL_ES2 1
#define SDL_VIDEO_OPENGL_EGL 1
// #define SDL_VIDEO_RENDER_OGL_ES2 1
// #define SDL_VIDEO_OPENGL_ES2 1
// #define SDL_VIDEO_OPENGL_EGL 1
#endif
#ifndef SDL_POWER_DISABLED

View File

@@ -7,6 +7,8 @@
#include <gdiplus.h>
#include <assert.h>
#define SIMUICON 101
/* Loading images using GDI+
* On Windows, we decompress JPEG images using GDI+ which is widely available.
* Note that this adds an extra runtime dependency (as compared to just SDL),
@@ -14,6 +16,7 @@
HRESULT CreateStreamOnResource(const char * name, LPSTREAM * stream) {
HINSTANCE hInstance = GetModuleHandle(0);
HICON Icon = LoadIcon(hInstance, MAKEINTRESOURCE(SIMUICON));
*stream = nullptr;
HRSRC hC = FindResource(hInstance, name, RT_RCDATA);
if (!hC) {

View File

@@ -1,4 +1,5 @@
#include <ion/src/simulator/windows/resources_gen.rc>
SIMUICON ICON "../assets/logoWin.ico"
1 VERSIONINFO
FILEVERSION 1,0,0,0

View File

@@ -143,6 +143,7 @@ uint32_t CodePoints[] = {
0x2192, // → // RIGHTWARDS ARROW
0x2211, // ∑ // N-ARY SUMMATION
0x221a, // √ // SQUARE ROOT
0x221e, // ∞ // INFINITY
0x222b, // ∫ // INTEGRAL
0x2248, // ≈ // ALMOST EQUAL TO
0x2264, // ≤ // LESS-THAN OR EQUAL TO

View File

@@ -180,6 +180,7 @@ tests_src += $(addprefix poincare/test/,\
function_solver.cpp\
helper.cpp\
helpers.cpp\
infinity.cpp \
integer.cpp\
layout.cpp\
layout_cursor.cpp\

View File

@@ -56,7 +56,7 @@ public:
static Infinity Builder(bool negative);
Expression setSign(ExpressionNode::Sign s);
static const char * Name() {
return "inf";
return "";
}
static int NameSize() {
return 4;

View File

@@ -44,6 +44,9 @@ bool Parser::IsSpecialIdentifierName(const char * name, size_t nameLength) {
return (
Token::CompareNonNullTerminatedName(name, nameLength, Symbol::k_ans) == 0 ||
Token::CompareNonNullTerminatedName(name, nameLength, Infinity::Name()) == 0 ||
Token::CompareNonNullTerminatedName(name, nameLength, "inf") == 0 ||
Token::CompareNonNullTerminatedName(name, nameLength, "infinity") == 0 ||
Token::CompareNonNullTerminatedName(name, nameLength, "oo") == 0 ||
Token::CompareNonNullTerminatedName(name, nameLength, Undefined::Name()) == 0 ||
Token::CompareNonNullTerminatedName(name, nameLength, Unreal::Name()) == 0 ||
Token::CompareNonNullTerminatedName(name, nameLength, "u") == 0 ||
@@ -426,7 +429,14 @@ void Parser::parseSequence(Expression & leftHandSide, const char * name, Token::
void Parser::parseSpecialIdentifier(Expression & leftHandSide) {
if (m_currentToken.compareTo(Symbol::k_ans) == 0) {
leftHandSide = Symbol::Ans();
} else if (m_currentToken.compareTo(Infinity::Name()) == 0) {
} else if (m_currentToken.compareTo(Infinity::Name()) == 0 ||
m_currentToken.compareTo("inf") == 0 ||
m_currentToken.compareTo("infinity") == 0 ||
m_currentToken.compareTo("oo") == 0
) {
leftHandSide = Infinity::Builder(false);
} else if (m_currentToken.compareTo("inf") == 0) {
leftHandSide = Infinity::Builder(false);
} else if (m_currentToken.compareTo(Undefined::Name()) == 0) {
leftHandSide = Undefined::Builder();

View File

@@ -224,7 +224,7 @@ Token Tokenizer::popToken() {
if (c == '}') {
return Token(Token::RightBrace);
}
if (c == UCodePointSquareRoot) {
if (c == UCodePointSquareRoot || c == UCodePointInfinity) {
Token result(Token::Identifier);
result.setString(start, UTF8Decoder::CharSizeOfCodePoint(c));
return result;

View File

@@ -83,7 +83,7 @@ QUIZ_CASE(poincare_approximation_float) {
}
QUIZ_CASE(poincare_approximation_infinity) {
assert_expression_approximates_to<double>("10^1000", "inf");
assert_expression_approximates_to<double>("10^1000", "");
assert_expression_approximates_to_scalar<double>("10^1000", INFINITY);
}
@@ -215,7 +215,7 @@ QUIZ_CASE(poincare_approximation_logarithm) {
assert_expression_approximates_to<float>("log(5+2×𝐢)", "0.731199+0.1652518×𝐢");
assert_expression_approximates_to<double>("ln(5+2×𝐢)", "1.6836479149932+3.8050637711236ᴇ-1×𝐢");
assert_expression_approximates_to<double>("log(0,0)", Undefined::Name());
assert_expression_approximates_to<double>("log(0)", "-inf");
assert_expression_approximates_to<double>("log(0)", "-");
assert_expression_approximates_to<double>("log(2,0)", "0");
// WARNING: evaluate on branch cut can be multivalued
@@ -679,8 +679,8 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) {
// Key values
assert_expression_approximates_to<float>("atan(0)", "0", Degree);
assert_expression_approximates_to<float>("atan(0)", "0", Gradian);
assert_expression_approximates_to<double>("atan(-𝐢)", "-inf×𝐢", Radian);
assert_expression_approximates_to<double>("atan(𝐢)", "inf×𝐢", Radian);
assert_expression_approximates_to<double>("atan(-𝐢)", "-×𝐢", Radian);
assert_expression_approximates_to<double>("atan(𝐢)", "×𝐢", Radian);
/* cosh: R -> R (even)
* R×𝐢 -> R (oscillator)
@@ -978,8 +978,8 @@ QUIZ_CASE(poincare_approximation_complex_format) {
assert_expression_approximates_to<double>("1ᴇ155-1ᴇ155×𝐢", "1.41421356237ᴇ155×^\u0012-0.785398163397×𝐢\u0013", Radian, Metric, Polar,12);
assert_expression_approximates_to<float>("-2ᴇ100+2ᴇ100×𝐢", Undefined::Name());
assert_expression_approximates_to<double>("-2ᴇ360+2ᴇ360×𝐢", Undefined::Name());
assert_expression_approximates_to<float>("-2ᴇ100+2ᴇ10×𝐢", "-inf+2ᴇ10×𝐢");
assert_expression_approximates_to<double>("-2ᴇ360+2×𝐢", "-inf+2×𝐢");
assert_expression_approximates_to<float>("-2ᴇ100+2ᴇ10×𝐢", "-+2ᴇ10×𝐢");
assert_expression_approximates_to<double>("-2ᴇ360+2×𝐢", "-+2×𝐢");
assert_expression_approximates_to<float>("undef+2ᴇ100×𝐢", Undefined::Name());
assert_expression_approximates_to<double>("-2ᴇ360+undef×𝐢", Undefined::Name());
}

View File

@@ -18,7 +18,7 @@ QUIZ_CASE(poincare_serialization_rational) {
assert_expression_serialize_to(Rational::Builder(MaxIntegerString()), MaxIntegerString());
Integer one(1);
Integer overflow = Integer::Overflow(false);
assert_expression_serialize_to(Rational::Builder(one, overflow), "1/inf");
assert_expression_serialize_to(Rational::Builder(one, overflow), "1/");
assert_expression_serialize_to(Rational::Builder(overflow), Infinity::Name());
}

View File

@@ -0,0 +1,7 @@
#include "helper.h"
QUIZ_CASE(poincare_infinity_symbol) {
assert_parsed_expression_simplify_to("inf", "");
assert_parsed_expression_simplify_to("oo", "");
assert_parsed_expression_simplify_to("", "");
}

View File

@@ -32,7 +32,7 @@ QUIZ_CASE(poincare_simplification_rational) {
// -OverflowedIntegerString()
buffer[0] = '-';
strlcpy(buffer+1, BigOverflowedIntegerString(), 400-1);
assert_parsed_expression_simplify_to(buffer, "-inf");
assert_parsed_expression_simplify_to(buffer, "-");
assert_parsed_expression_simplify_to("-1/3", "-1/3");
assert_parsed_expression_simplify_to("22355/45325", "4471/9065");
@@ -69,26 +69,26 @@ QUIZ_CASE(poincare_simplification_infinity) {
assert_parsed_expression_simplify_to("0×inf", Undefined::Name());
assert_parsed_expression_simplify_to("0×inf×π", Undefined::Name());
assert_parsed_expression_simplify_to("3×inf/inf", "undef");
assert_parsed_expression_simplify_to("1ᴇ1000", "inf");
assert_parsed_expression_simplify_to("-1ᴇ1000", "-inf");
assert_parsed_expression_simplify_to("1ᴇ1000", "");
assert_parsed_expression_simplify_to("-1ᴇ1000", "-");
assert_parsed_expression_simplify_to("-1ᴇ-1000", "0");
assert_parsed_expression_simplify_to("1ᴇ-1000", "0");
//assert_parsed_expression_simplify_to("1×10^1000", "inf");
assert_parsed_expression_simplify_to("inf^0", "undef");
assert_parsed_expression_simplify_to("1^inf", "1^inf");
assert_parsed_expression_simplify_to("1^(X^inf)", "1^\u0012X^inf\u0013");
assert_parsed_expression_simplify_to("1^inf", "1^");
assert_parsed_expression_simplify_to("1^(X^inf)", "1^\u0012X^\u0013");
assert_parsed_expression_simplify_to("inf^(-1)", "0");
assert_parsed_expression_simplify_to("(-inf)^(-1)", "0");
assert_parsed_expression_simplify_to("inf^(-√(2))", "0");
assert_parsed_expression_simplify_to("(-inf)^(-√(2))", "0");
assert_parsed_expression_simplify_to("inf^2", "inf");
assert_parsed_expression_simplify_to("(-inf)^2", "inf");
assert_parsed_expression_simplify_to("inf^√(2)", "inf");
assert_parsed_expression_simplify_to("(-inf)^√(2)", "inf×(-1)^√(2)");
assert_parsed_expression_simplify_to("inf^x", "inf^x");
assert_parsed_expression_simplify_to("inf^2", "");
assert_parsed_expression_simplify_to("(-inf)^2", "");
assert_parsed_expression_simplify_to("inf^√(2)", "");
assert_parsed_expression_simplify_to("(-inf)^√(2)", "×(-1)^√(2)");
assert_parsed_expression_simplify_to("inf^x", "^x");
assert_parsed_expression_simplify_to("1/inf+24", "24");
assert_parsed_expression_simplify_to("^(inf)/inf", "0×^inf");
assert_parsed_expression_simplify_to("^(inf)/inf", "0×^");
// Logarithm
assert_parsed_expression_simplify_to("log(inf,0)", "undef");
@@ -97,11 +97,11 @@ QUIZ_CASE(poincare_simplification_infinity) {
assert_parsed_expression_simplify_to("log(1,inf)", "0");
assert_parsed_expression_simplify_to("log(inf,inf)", "undef");
assert_parsed_expression_simplify_to("ln(inf)", "inf");
assert_parsed_expression_simplify_to("log(inf,-3)", "log(inf,-3)");
assert_parsed_expression_simplify_to("log(inf,3)", "inf");
assert_parsed_expression_simplify_to("log(inf,0.3)", "-inf");
assert_parsed_expression_simplify_to("log(inf,x)", "log(inf,x)");
assert_parsed_expression_simplify_to("ln(inf)", "");
assert_parsed_expression_simplify_to("log(inf,-3)", "log(,-3)");
assert_parsed_expression_simplify_to("log(inf,3)", "");
assert_parsed_expression_simplify_to("log(inf,0.3)", "-");
assert_parsed_expression_simplify_to("log(inf,x)", "log(,x)");
assert_parsed_expression_simplify_to("ln(inf)*0", "undef");
}
@@ -436,8 +436,8 @@ QUIZ_CASE(poincare_simplification_units) {
* expression */
assert_parsed_expression_simplify_to("0×_s", "0×_s");
assert_parsed_expression_simplify_to("0×_tsp", "0×_m^3");
assert_parsed_expression_simplify_to("inf×_s", "inf×_s");
assert_parsed_expression_simplify_to("-inf×_oz", "-inf×_kg");
assert_parsed_expression_simplify_to("inf×_s", "×_s");
assert_parsed_expression_simplify_to("-inf×_oz", "-×_kg");
assert_parsed_expression_simplify_to("2_s+3_s-5_s", "0×_s");
assert_parsed_expression_simplify_to("normcdf(0,20,3)×_s", "13.083978345207×_ps");
assert_parsed_expression_simplify_to("log(0)×_s", "undef");
@@ -917,7 +917,7 @@ QUIZ_CASE(poincare_simplification_trigonometry_functions) {
assert_parsed_expression_simplify_to("acos(cos(12))", "4×π-12");
assert_parsed_expression_simplify_to("acos(cos(2*1ᴇ10))", "20000000000");
assert_parsed_expression_simplify_to("acos(cos(inf))", "acos(cos(inf))");
assert_parsed_expression_simplify_to("acos(cos(inf))", "acos(cos())");
assert_parsed_expression_simplify_to("acos(cos(9))", "-2×π+9");
assert_parsed_expression_simplify_to("acos(cos(10^125))", "acos(cos(10^125))");
assert_parsed_expression_simplify_to("acos(cos(1/0))", Undefined::Name());
@@ -1324,7 +1324,7 @@ QUIZ_CASE(poincare_simplification_complex_format) {
// Cartesian
assert_parsed_expression_simplify_to("-2.3ᴇ3", "-2300", User, Radian, Metric, Cartesian);
assert_parsed_expression_simplify_to("3", "3", User, Radian, Metric, Cartesian);
assert_parsed_expression_simplify_to("inf", "inf", User, Radian, Metric, Cartesian);
assert_parsed_expression_simplify_to("inf", "", User, Radian, Metric, Cartesian);
assert_parsed_expression_simplify_to("1+2+𝐢", "3+𝐢", User, Radian, Metric, Cartesian);
assert_parsed_expression_simplify_to("-(5+2×𝐢)", "-5-2×𝐢", User, Radian, Metric, Cartesian);
assert_parsed_expression_simplify_to("(5+2×𝐢)", "5+2×𝐢", User, Radian, Metric, Cartesian);
@@ -1413,7 +1413,7 @@ QUIZ_CASE(poincare_simplification_complex_format) {
// Polar
assert_parsed_expression_simplify_to("-2.3ᴇ3", "2300×^\u0012π×𝐢\u0013", User, Radian, Metric, Polar);
assert_parsed_expression_simplify_to("3", "3", User, Radian, Metric, Polar);
assert_parsed_expression_simplify_to("inf", "inf", User, Radian, Metric, Polar);
assert_parsed_expression_simplify_to("inf", "", User, Radian, Metric, Polar);
assert_parsed_expression_simplify_to("1+2+𝐢", "√(10)×^\u0012\u0012-2×atan(3)+π\u0013/2×𝐢\u0013", User, Radian, Metric, Polar);
assert_parsed_expression_simplify_to("1+2+𝐢", "√(10)×^\u0012\u0012×atan(3)+90×π\u0013/180×𝐢\u0013", User, Degree, Metric, Polar);
assert_parsed_expression_simplify_to("-(5+2×𝐢)", "√(29)×^\u0012\u0012-2×atan(5/2)-π\u0013/2×𝐢\u0013", User, Radian, Metric, Polar);
@@ -1669,9 +1669,9 @@ QUIZ_CASE(poincare_hyperbolic_trigonometry) {
QUIZ_CASE(poincare_probability) {
assert_parsed_expression_simplify_to("invnorm(-1.3,2,3)", Undefined::Name());
assert_parsed_expression_simplify_to("invnorm(0,2,3)", "-inf");
assert_parsed_expression_simplify_to("invnorm(0,2,3)", "-");
assert_parsed_expression_simplify_to("invnorm(0.5,2,3)", "2");
assert_parsed_expression_simplify_to("invnorm(1,2,3)", "inf");
assert_parsed_expression_simplify_to("invnorm(1,2,3)", "");
assert_parsed_expression_simplify_to("invnorm(1.3,2,3)", "undef");
assert_parsed_expression_simplify_to("invnorm(3/4,2,random())", "invnorm(3/4,2,random())"); // random can be 0
assert_parsed_expression_simplify_to("invnorm(0.5,2,0)", Undefined::Name());

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 405 B

After

Width:  |  Height:  |  Size: 2.1 KiB