
ProgCalc
38 Digit Swift Programmable
Free · Designed for iPad
**ProgCalc Overview**
ProgCalc is a high-precision (38-digit) programmable calculator with true-decimal arithmetic, offering a Swift programming language interface for creating complex algorithms. It supports both scalar and non-scalar data types and operations. Non-scalar data types include complex numbers, quaternions, n-dimensional vectors, arrays, lists, and hierarchical tuples.
The app uses a tailored subset of the standard Swift language, optimized for numerical applications. It includes a comprehensive 38-digit scalar math library featuring well-known transcendental functions (trigonometric, hyperbolic, logarithmic, and exponential) as well as specialized functions such as arithmetic-geometric mean, arbitrary-precision rounding, modulo operations, binomial coefficients (log and normal), factorial functions (log and normal), ceiling and floor functions (toward -∞ and 0), and more.
A detailed app documentation is included, accessible via the [2nd][8] key. It provides a comprehensive guide to all calculator features, a language reference with examples and grammar, and additional resources.
**User Interface Modes**
ProgCalc offers three interactive modes, detailed in the app documentation:
- Standard infix notation (infiX, default)
- Fully editable infix notation (infiXE)
- Reverse Polish Notation (RPN)
You can switch between modes from the device’s home screen by using a pressure gesture on the app icon. On iPad devices, dedicated mode-switch keys provide a more convenient option.
**Additional Notes**
- ProgCalc is ad-free and will remain so.
- The app does not collect any information.
- The app does not rely on any third-party software.
Ratings & Reviews
This app has not received enough ratings or reviews to display an overview.
Bug Fix Release 1.91
Several bugs related to property operator entry in infiX and infiXE interactive modes have been resolved. To test these fixes, try using the .map, .gmap, .gmapr, .bmap, .reduce, .zip, and .contains property operators in the interactive infix modes. These operators now work correctly with non-scalar types and non-scalar expression results, including operator chaining (e.g., .bmap(agm).map(sin).gmap(fixedround, 32)), without displaying confusing transient error messages. Additionally, some macOS shortcut keys have been updated or added.
For detailed information about all the changes in this release, refer to the built-in app documentation, specifically in Section 11.9, “Release Notes.” All subsections have been updated.
Late Bugs Detected:
In infiX / infiXE interactive modes, memory registers ($m0 through $m11) are treated as scalar variables by default. If you store a tuple in a memory register and attempt to use chained property operators like '.map(.elem_access_op)' interactively (e.g., $m4.map(.y)), it will fail with:
"syntax error, unexpected 'vector element access operator"
However, the same operation works when compiled and run in a program:
$m4.map(.y) // works in compiled programs
This happens because memory registers are implicitly declared as scalars, and type-casting is not available interactively.
var $m4: scalar // type-cast is not available interactively.
Workaround: Now assume that you've stored a tuple value in the $m4 memory register. Define a tuple-type global variable that mirrors $m4, and avoid purging it.
// type-cast is required. Refreshes value from $m4 on each execution.
var m4: tuple = $m4 as tuple
// purge(m4)
Now, the same operation will work interactively -- use [2nd][swap|VARS] view to enter 'm4':
m4.map(.y) // works — 'm4' has explicit tuple type
Note that a tuple resulting from a 'vexpr' works interactively just as it does in a compiled program. For example, you can interactively create an array object, convert it to a tuple, and extract the .y field from each element to build a list of y-values:
[ your_array ].map ( cis ) .map ( .y )
In general, any interactive expression requiring an explicit type cast will fail. For instance, starting with a 'vexpr' tuple and attempting '.map(.y)' will result in a syntax error in interactive mode, even though it works when compiled as type information would be available.
The developer, Neopoise, indicated that the app’s privacy practices may include handling of data as described below. For more information, see the developer’s privacy policy .
Data Not Collected
The developer does not collect any data from this app.
Accessibility
The developer has not yet indicated which accessibility features this app supports. Learn More
Information
- Seller
- Akif M. Suyabatmaz
- Size
- 10.1 MB
- Category
- Education
- Compatibility
Requires iOS 15.0 or later.
- iPhone
Requires iOS 15.0 or later. - iPad
Requires iPadOS 15.0 or later. - iPod touch
Requires iOS 15.0 or later. - Mac
Requires macOS 12.0 or later and a Mac with Apple M1 chip or later. - Apple Vision
Requires visionOS 1.0 or later.
- Languages
- English
- Age Rating
4+
- 4+
- Copyright
- © 2018, Akif Suyabatmaz