English | 简体中文
Download MaxMath 1.1.1 APK · Release notes
MaxMath is an offline Android app for higher-algebra computation and interactive plotting, powered by GNU Maxima. Its interface is built with Kotlin and Jetpack Compose, mathematical input is handled by a pure Kotlin parser, and complex symbolic computations run in a separate engine process.
Current release: 1.1.1. Minimum supported version: Android 8.0 (API 26). The native computation engine currently provides an
arm64-v8abuild workflow only.
- Matrices: determinant, inverse, transpose, rank, trace, eigenvalues, and eigenvectors
- Systems of equations: natural syntax such as
x+y=1; 2x-y=3, plus raw Maxima input - Polynomials: factorization, greatest common divisor, root finding, expansion, and simplification
- Vector spaces: inner product, norm, and Gram-Schmidt orthogonalization
- Quadratic forms: expansion, eigenvalues, and signature
- Calculus: limits, derivatives of arbitrary order, and definite or indefinite integrals
- Plotting: touch-enabled 2D multi-function plots, 3D surfaces, and contour plots, all with axis ticks and numeric labels
- Input: implicit multiplication, radicals, fractions, common functions, π/e, and natural equation syntax
- Output: offline LaTeX rendering, copyable text, and PNG saving or sharing
- Localization: Chinese, English, or the system language
- Appearance: complete light and dark themes, including interactive plots
- Privacy: no network permission, accounts, ads, analytics, or telemetry
| Path | Responsibility |
|---|---|
parser/ |
Lexing, AST construction, expression evaluation, and Maxima/NumPy code generation |
engine/ |
Typed computation tasks, Maxima scripts, JNI subprocesses, the isolated process service, and 2D plotting |
app/ |
Compose screens, state management, LaTeX output, and interactive OpenGL 3D/contour rendering |
native/ |
Android cross-compilation and runtime packaging scripts for ECL and Maxima |
docs/ |
Product specifications and implementation constraints |
Lightweight operations run in the UI process. Long-running work is forwarded
through Android Messenger to the isolated :engine process. Cancellation or a
timeout terminates the corresponding Maxima subprocess. Maxima assists with 2D
plot analysis before Matplotlib renders the image; 3D surfaces and contour plots
are sampled locally from the same expression AST and rendered with OpenGL.
git clone https://github.com/ParuhParhat/MaxMath.git
cd MaxMath- JDK 17
- Android Studio, or Android SDK 36
- Android NDK 27.2.12479018 and CMake 3.22 (required to compile the JNI bridge)
- Python 3.10 (required when Chaquopy packages Python runtime dependencies)
Put the local SDK path in the untracked local.properties file. The repository
does not contain signing keys; place release-signing configuration in the
untracked keystore.properties file.
./gradlew :parser:test
./gradlew -Pmaxmath.buildNative=false :engine:testDebugUnitTest :app:testDebugUnitTestOn Windows, use:
gradlew.bat :parser:test
gradlew.bat -Pmaxmath.buildNative=false :engine:testDebugUnitTest :app:testDebugUnitTest./gradlew :app:assembleDebugThe APK is written to app/build/outputs/apk/debug/app-debug.apk.
The Maxima/ECL download directories, cross-compilation outputs, and generated application runtime are large and governed by their respective licenses, so they are not tracked by Git. A fresh checkout can build and install the UI, but actual Maxima computation requires generating and packaging the native engine first:
cd native
./download-sources.sh
./build-host-ecl.sh
./build-ecl-android.sh arm64-v8a
./build-maxima-android.sh arm64-v8a
./package-engine.sh arm64-v8a
cd ..
./gradlew :app:assembleDebugThe current scripts target a Linux x86_64 host and the NDK's linux-x86_64
toolchain. See native/README.md for complete dependency,
environment-variable, and troubleshooting information.
Generated directories that must not be committed include:
.build/app/src/main/assets/engine/app/src/main/jniLibs/
- Product and implementation specification
- Native engine build guide
- Release notes
- Contributing guide
- Security policy
- Privacy notice
- Third-party license notices
- The native computation engine currently targets
arm64-v8aonly; thex86_64build scripts still need further verification. - A fresh source checkout does not include a prebuilt Maxima/ECL runtime. Generate it as described above before running full computations.
- Results come from computer algebra and numerical algorithms and should not be treated as formal proofs.
Source code contributed to MaxMath that is original to the project and does not carry a separate license notice is licensed under the MIT License.
The build resolves the GPL-2.0-licensed jlatexmath-android and may include the
GPL-licensed GNU Maxima. ECL, Chaquopy, Matplotlib, NumPy, and other components
also retain their respective licenses. Distribution of a complete APK must
comply with those third-party license obligations. See
THIRD_PARTY_NOTICES.md for details.