perseus-with-complex-numbers
v1.0.2
Published
This is a fork/clone of [Khan Academy's Perseus](https://github.com/Khan/perseus) project with additional support for complex numbers and enhanced mathematical parsing capabilities.
Readme
Perseus with Extra Parsers
This is a fork/clone of Khan Academy's Perseus project with additional support for complex numbers and enhanced mathematical parsing capabilities.
Extra Features
- Complex Number Parsing: Support for expressions like
3 + 4i,(2 + i)^2
Limitations
Doc link for limitations -> https://docs.google.com/document/d/1MDNKrEXAn_S5ry0zrwc1IMN3N9ZH0wO9sjXgOSKqEKc/edit?tab=t.0
Prerequisites
- Node.js >= 20
- pnpm (recommended package manager)
Installation
# Install dependencies
pnpm installBuilding Packages
Build All Packages
# Build all packages
pnpm build
# Build with production optimizations
pnpm build:prodsizecheckBuild Specific Packages
# Build only the main perseus package
pnpm --filter @khanacademy/perseus build
# Build core utilities
pnpm --filter @khanacademy/perseus-core build
# Build math input components
pnpm --filter @khanacademy/math-input buildDevelopment Build
# Watch mode for development
pnpm watch
# Generate parsers (required before building)
pnpm gen:parsersType Checking
# Type check all packages
pnpm typecheck
# Build TypeScript types
pnpm build:typesDevelopment
Running Tests
# Run all tests
pnpm test
# Run tests with coverage
pnpm coverage
# Run Cypress tests
pnpm cypress
# Run Cypress tests in CI
pnpm cypress:ciLinting and Formatting
# Lint all code
pnpm lint
# Format code
pnpm formatStorybook
# Start Storybook development server
pnpm storybook
# Build Storybook
pnpm build-storybookUsage Examples
// Parse complex expressions
const result = KAS.parse("3 + 4i");
const complexExpr = KAS.parse("(2 + i)^2");
// Complex number evaluation
const value = complexExpr.eval({x: 1 + 2i});Project Structure
perseus-with-extra-parsers/
├── packages/ # Individual npm packages
│ ├── perseus/ # Main Perseus library
│ ├── perseus-core/ # Core types and utilities
│ ├── kas/ # Algebraic expression parser
│ ├── kmath/ # Mathematical utilities
│ └── ... # Other packages
├── config/ # Build and test configuration
├── data/ # Test data and questions
├── docs/ # Documentation
├── testing/ # Testing utilities
└── utils/ # Build utilitiesAcknowledgments
This project is based on Khan Academy's Perseus project. The complex number support and additional parsers are extensions to the original work.
