A modern, feature-rich graphing calculator built with JavaFX that enables users to visualize mathematical functions and solve complex equations with an intuitive interface.
β¨ Interactive Graph Visualization
- Real-time rendering of mathematical functions
- Support for single and multi-variable equations
- Smooth zooming and panning capabilities
π Advanced Mathematical Operations
- Comprehensive trigonometric functions (sin, cos, tan, cot, and inverse variants)
- Hyperbolic functions (sinh, cosh, coth)
- Support for logarithmic and exponential functions
- Custom variable support (x, y, and more)
π Equation Solving
- Bisection method for finding roots
- Support for implicit equations F(x,y)=0
- Multi-root detection and analysis
π¨ User-Friendly Interface
- Clean, modern GUI design
- Real-time error detection and reporting
- Mathematical notation rendering using JLaTeXMath
- Responsive and accessible controls
- OS: Windows 10 or newer (64-bit)
- Disk Space: ~160MB (includes bundled runtime/JDK)
- Memory: Minimum 512MB RAM (1GB recommended)
- Internet: Not required after download
The distributed GraphX.zip includes the required runtime β no separate JDK installation is necessary for the Windows distribution.
- Download the
GraphX.zipfile. - Extract the zip to a folder of your choice.
- Run
GraphX.exeto launch the calculator.
The runtime (JDK) is included in the zip file β no additional JDK installation is required.
- Enter your mathematical expression in the input field
- Specify the variable and range (e.g., x from -10 to 10)
- Click "Graph" to visualize the function
- Use mouse controls to zoom and pan
- Trigonometric: sin, cos, tan, cot, asin, acos, atan, acot
- Hyperbolic: sinh, cosh, tanh, coth
- Logarithmic: log, ln
- Other: sqrt, abs, pow, floor, ceil
- Simple:
sin(x),x^2 - 4 - Complex:
sin(x) * cos(y),sqrt(x^2 + y^2) - Multi-variable:
x*y + 2*x - 3*y
GraphX/
βββ src/
β βββ main/
β βββ java/
β β βββ dev/sadik/GraphX/
β β β βββ App.java # Main application entry point
β β β βββ GraphingCalculator.java # JavaFX Application class
β β β βββ GraphController.java # Graph rendering logic
β β β βββ Parser.java # Expression parsing and solving
β β β βββ DataModel.java # Data management
β β β βββ AppController.java # Main UI controller
β β β βββ ButtonController.java # Button event handlers
β β β βββ ErrorController.java # Error handling
β β β βββ InformationController.java # Information display
β β β βββ module-info.java # Java module configuration
β β βββ resources/
β β βββ dev/sadik/GraphX/
β β βββ App.fxml # Main UI layout
β β βββ ErrorScreen.fxml # Error dialog layout
β β βββ Information.fxml # Information panel layout
βββ lib/
β βββ javafx-25.pom # JavaFX dependency
βββ pom.xml # Maven configuration
βββ mvnw, mvnw.cmd # Maven wrapper
βββ README.md # This file
- JavaFX 25: Modern GUI framework for Java
- exp4j 0.4.8: Expression evaluation library
- JLaTeXMath 1.0.7: Mathematical notation rendering
- Maven 3.x: Build automation
- JUnit 5: Unit testing framework
- Java 24+: Latest Java features and modules
The project uses Launch4j to create a standalone .exe file:
mvn clean packageThis generates target/GraphX.exe ready for distribution.
Use Inno Setup with the provided configuration to bundle the executable and dependencies into an installer package.
- Utilizes JavaFX Canvas for efficient real-time rendering
- Adaptive resolution based on graph range and zoom level
- Hardware-accelerated graphics support
- Built on exp4j library for safe expression evaluation
- Custom function implementations (acot, coth)
- Error handling with meaningful user feedback
- Implements bisection method algorithm
- Handles both single and multi-variable equations
- Robust handling of edge cases (infinity, NaN)
- 3D graphing support
- Parametric equations
- Derivative and integral visualization
- Export graphs as images (PNG, SVG)
- Graph annotation tools
- History and saved expressions
- Keyboard shortcuts reference
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Icon Design: Anggara - Flaticon for the information icon
- exp4j: For reliable mathematical expression evaluation
- JLaTeXMath: For beautiful mathematical rendering
- JavaFX: For the modern UI framework
For issues, feature requests, or questions:
- Open an issue on GitHub
- Contact: sadatisadik.pranto@gmail.com
- Bundled runtime included (no separate JDK required)
- Simplified installation via
GraphX.zip - Updated system requirements and installer
- Improved graph rendering and stability fixes
- Miscellaneous bug fixes and enhancements
Made with β€οΈ by Sadati Sadik Pranto
Last Updated: December 2025