by Frédéric "mr womp womp" Desautels, Christopher "KermMartian" Mitchell, and Ryan "iPhoenix" Pitasky
It’s not every day that a brand new graphing calculator manufacturer enters the scene. Casio created the first graphing calculator, the fx-7000G, in 1985, quickly followed by the HP-28C in 1987 and the TI-81 in 1990. In the 33 years since, the only major new graphing calculator has been the Numworks N0100 in 2017. At last, we are able to announce a new contender on the scene: Zero Calculators. For close to two years, members of Cemetech, TI-Planet, and the graphing calculator community have been testing and providing feedback on this company’s first calculator. And today, we’re revealing our in-depth look at the ZGC3, a third and significantly iterated prototype.
The Zero Calculators ZGC3 graphing calculator
The reviewers who created this article received free prototypes from Zero Calculators, but no other considerations from Zero Calculators. The opinions in this article have not been edited or audited by Zero Calculators.
Overview of the Zero Calculators ZGC3
Who’s it for? The best answer to this question comes from the look and feel of the ZGC1 and ZGC2 prototypes, and the OS of the current prototype, which offers near keypress-identical compatibility with the TI-84 Plus CE. It’s aimed squarely at the same high school and college classrooms and standardized tests as TI’s well-used, sometimes well-loved TI-83 Plus/TI-84 Plus family of calculators. It offers functionality for arithmetic, trigonometry, statistics, probability, geometry, graphing, and some calculus and programming. Like the TI-84 Plus calculators and Casio’s equivalent, the fx-CG50 / Prizm, it does not offer a computer algebra system, or CAS, and therefore won’t be solving symbolic equations or doing symbolic integration and differentiation for you.
The TI-84 Plus CE, ZGC1, ZGC2, and at right, the current ZGC3.
The calculator is slim and light, a few millimeters shorter and thinner than the TI-84 Plus CE, also with a hard plastic case, and the front also laid out with a screen covered in a protective clear plastic above an array of keys. Unlike the TI-84 Plus CE, it has a rubbery ring covering the thin edge of the calculator, a protective boon if you drop it on a corner, and instead of slightly concave, flat, rectangular keys, the ZGC3 prototype has introduced hard, clear, nearly M&M-shaped domed keys. In bright light, the reflective keys and newly protective faceplate of the calculator are hard to read, and the tips of the hard domed keys are somewhat uncomfortable for extended calculating or programming sessions.
Like equivalent calculators, each key types a character of string, enters a menu, or invokes a calculator function, and most have alternate functions activated by pressing the [2nd] or [ALPHA] keys before the key. Lowercase letters are available from the outset on the ZGC3; on TI’s calculators, you need to use an assembly program to unlock the built-in lowercase letters.
The font is smaller, lighter, and allows more to fit on the homescreen - when programming, you can put 12 rows and 32 columns of characters on the screen, compared to the 10 by 26 of the TI-84 Plus CE. Those smaller characters are also harder to read. In fact, this pattern persists throughout the calculator’s interface: small, light text that is hard to read, whether you’re in menus, the graph table, or the program editor. Take a look at the apparent contrast of the ZGC3 and the TI-84 Plus CE in the graph table:
Keypresses and menus generally feel sluggish, and we often found ourselves having to press keys multiple times or slow down our typing in order to make them register.
First and foremost, a graphing calculator is a calculator, and must first be therefore judged on its merits as a calculator. In class, on the SATs, and sitting on desks around the world, users pick up their calculators to do simple arithmetic, trigonometry, statistics, maybe even a bit of calculus. If it was originally aimed at being an everyday classroom calculator (but better), then the ZGC3 should have similar features and accuracy to the TI-84 Plus CE, the Casio fx-CG50 (Prizm) and other staples of the modern high school classroom. Features it has; accuracy it lacks.
Arithmetic & Trigonometry
Essentially every function you would expect on a TI-84 Plus CE is present on the Zero Calculators ZGC3, with the same name and the same arguments - but not necessarily the same answer. The buttons have the same names and functions as their TI-84 Plus CE equivalents (with a minor rearrangement of the keys from the ZGC2 to the ZGC3), and any student or teacher familiar with existing graphing technology will find functionality where they expect it.
As we’ll soon discuss, a current critical problem with the ZGC3 is its use of an internal representation that makes similar compromises to the decimal numbers widely used in computers but translate poorly to a calculator.
In fact, the calculator sometimes performs invisible and misleading rounding on results:
remainder(13.716,4.572) prints 4.572 - because it rounded 4.5719999999999 (the correct answer is 0). Another way to show this same problem:
remainder(13.716,4.572)-4.572 should print -4.572 in a mathematically perfect world, 0 if the ZGC3 is telling the truth about the value of 4.572 - but actually prints -8.881784197E-16.
Statistics & Probability
Barring current bugs with Lists, the Zero offers the exact same statistics functions as the TI-84 Plus CE (List editor, significance tests, regression models, confidence intervals, etc.) but currently lacks a probability simulation app. Accuracy problems rear their head again, for example with the probability function
randInt() (random integer). Entering 1,000,000,000 and 9,999,999,999 in the
randInt() wizard pastes
randInt(1000000000,2147483647,1) on the homescreen (2147483647 is the maximum signed 32-bit integer value). The STATS menu is virtually identical to its TI equivalent, the only notable difference being the clrAllLists() command which is accessible directly from the STATS menu.
Here are some examples of the stats functions on both the CE and Zero:
Matrices & Lists
Matrices work as expected to solve systems of equations. Besides a minor visual bug, the matrix editor is essentially the same as on the CE. You can multiply a matrix by a complex number (as below), which is something the TI-84 Plus CE series does not support, but you cannot raise a matrix to a power, which the TI-84 Plus CE series does support. Generally, the Zero will give you the results you expect when you use the different features “the intended way”, but does not provide adequate safeguards to prevent users from entering whatever they want, causing the calculator to act in unexpected ways. This seems to be a common theme across the entire Zero OS.
That being said, we noted several issues/bugs:
- The matrix editor will not allow you to enter complex numbers despite the fact that the data type supports it.
- The standard way to programmatically set a matrix’s dimensions doesn’t work.
- Matrices can be created seemingly unboundedly large-- an advantage over the CE-- but bigger matrices crash.
- Implicitly multiplying a list by a variable returns 0, as below.
Graphing on the ZGC3
Like most of its competitors, the ZGC3 has a Y= screen where you can enter up to 10 equations in the form of Y=f(X), choose the shading style (for example, shading above or below the function), and then view a graph of the function(s). The powerful CPU of the ZGC3 shines while performing graphing: graphed functions appear instantly, and even complex shaded functions render in a fraction of a second. Graphed functions appear as accurate as is necessary for inspection, including vertical asymptote detection for functions like
tan(X). We could nitpick inconsistencies in the apparent widths of graphed functions, but overall graphing is an area where the ZGC3 feels most close to classroom-ready.
The calculator offers the same tools for inspecting graphs as other calculators like the TI-84 Plus CE, such as finding local minima, maxima, and zeros, tracing along functions, and viewing a table of X and Y values. Just like that calculator, there’s a WINDOW menu for changing the extents of the graph, a FORMAT menu to change the appearance (notably, lacking options to turn off the axes, change the color of the axes or background, or set a picture as the background to graph over), a ZOOM menu, and a TBL SETUP menu to configure the table of X/Y values.
y=2sin(x) on a TI-84 Plus CE (left) and Zero Calculators ZGC3
The [MODE] screen is very much like its TI-84 Plus CE equivalent, allowing users to modify settings such as angle mode, date and time and notation mode. Tucked away in the window format menu is the setting for dark mode. Because of the somewhat inferior contrast and rather strong backlight, this mode isn't much rest on users’ eyes, but it is distinctive theming, and a nice touch. Interestingly, there is a “Natural display mode”, equivalent to TI’s MathPrint™, which is trademarked. Clearly they were careful to avoid stepping on TI’s toes with the name.
The ZGC3 also has an exam mode, USB MSD mode, two apps (Poly Root Finder and Simultaneous EQN solver), a simulator and ZeroConnect (similar to TIConnect with a built-in ZeroBasic editor, offered for Windows, Mac and Linux); future Cemetech news might cover these, or just refer to your favorite TI-84 Plus CE tutorial/book/wiki and substitute the ZGC3 keys. Almost all of them will be relevant in the context of the ZGC3.
What Happened to the Numbers?
So why is the accuracy of the math features so uneven? The problem is rooted in core incompatibilities between how humans and computers (and calculators, which are small computers) do math. Humans can essentially do infinite-precision math, given enough paper and patience, whereas computers are limited by memory and speed. In fact, almost every modern computer uses special representations of decimal numbers packed into either 4-byte or 8-byte containers, under the glamorous name of IEEE-754. The 4-byte (“single-precision” or “float”) and 8-byte (“double-precision” or “double”) versions both make necessary compromises to jam all the information you might have in a decimal number into a few bits of memory: a sign, an integer part in front of the decimal point, and a fraction part after the decimal point. Most computer scientists or programmers who work with low-level languages know all about the many problems with IEEE-754 numbers - sometimes the answer is “use a double instead of a float”, and other times the number you want to represent or operation you want to encode is simply not possible without switching to a different implementation of number storage. We believe that the Zero Calculator may use a different floating-point storage format in at least some places in the OS, but it remains one plagued with accuracy problems.
While the Zero Calculator is blazingly fast, this numerical inaccuracy handicaps it as a reliable calculator. Simple tests reveal a preponderance of single-precision floats, integers in weird places, and rather odd overflow and underflow bugs. This alone is enough to dismiss the calculator, at least for now; it reveals a lack of understanding by the developers about what people require in a calculator (something that TI has thought a great deal about, to pick a single example). After all, if you cannot trust your device to do grade school addition and subtraction, as demonstrated by the canonical example of
(0.1+0.2)-0.3 revealing telling float artifacts, it’s hard to trust the more complex capabilities. Some digging by members "LogicalJoe" and "Adriweb" found that the developers comically boasted about their choice of floats over doubles, both of which are terrible solutions for a device where numerical precision over a broad range of scales is necessary.
ZGC3 ships with their own Zero BASIC language, and continuing with the trend of modern calculators coming with “real” programming languages, Python.
The Zero BASIC is similar to the language that the community and now TI themselves call TI-BASIC. Just like TI-BASIC, it consists of human-readable commands (if, then, else, while, do, end), math functions from elsewhere in the calculators capabilities (e.g.
ClrDraw). Unlike TI-BASIC, you can type it character-by-character on the calculator, and we believe a pre-execution tokenization and syntax-checking pass is performed. Like TI-BASIC, it appears to be an interpreted language, and is notably faster than TI-BASIC on a TI-84 Plus CE. In fact, if you don’t write to the screen, it is blazingly fast - a 30,000-iteration loop with a simple math operation in the loop completes in 7 seconds (12 seconds on the ZGC2).
Here’s a similar basic, BASIC SNAKE game running on a TI-84 Plus CE and a ZGC3, and a sample section of the Zero BASIC (left) and TI-BASIC code (right).
Running a simple BASIC Snake game on a TI-84 Plus CE and Zero Calculators ZGC3
Like the rest of the calculator, the programming capabilities are almost there, but feel like they haven’t been tested or fleshed out enough. The display dims during programs as if the calculator thinks no keys are being pressed, there’s no way to scroll down quickly in programs, you can’t type lists (e.g. L1) or even Ans in the program editor, the dim() command doesn’t work, and so on. The language syntax itself isn’t bad, but it could be improved. There are seemingly unnecessary additional keywords required (it’s illegal to omit the “then” in if/then or the “do” in “while/do”), and the convenience (if inefficiency) of label/goto-style execution flow is missing. A double-equals (==) is required for equality testing, even though assignment doesn’t use a single-equals, and that key optimization trick of TI-BASIC, omitting closing punctuation, isn’t allowed even though you can unambiguously only have one statement per line.
Python is provided by micropython, an implementation designed for memory-constrained embedded systems with similar specs to graphing calculators. This implementation is clearly not quite yet production-ready; important characters in Python such as
> and even the newline are completely untypable, and the interface is clearly a proof-of-concept REPL rather than anything meant for actual program-writing. Our testing encountered several crashes of the entire calculator while running short, limited code snippets, and pressing keys with no obvious meaning in the Python environment like ON or MATH rather curiously types the character “w”.
The Hardware of the Zero Calculators ZGC3
Under the Hood
The new design of the Zero graphing calculator (ZGC3) features an updated MCU over its predecessor the ZGC2. This new MCU (GD32F470ZK released in Jan 2023) offers much faster speeds (200MHz as opposed to the original STM32F413VG clocked at just 100MHz; discussion comparing the two SoCs). It also contains more internal flash memory (3mB, instead of 2mB) and 256kB of SRAM instead of the 320kB found in the ZGC2, however, this is more than made up for by the external SRAM which got a massive 16x boost in capacity (from just 512kB to a whopping 8mB).
The 2200mAH Li-Ion battery in the ZGC3 remains unchanged from the ZGC2 and offers nearly double the capacity of the CE-series (1200mAH). This brings the ZGC3's performance closer to higher end models such as the HP Prime and TI-Nspire CX II series, leaving the Casio fx-CG50 and TI-84 Plus CE series in the dust.
|Model||Zero ZGC2||Zero ZGC3||TI-84 Plus CE Python||Casio fx-CG50 PRIZM|
1 mB Flash, 320 kB SRAM, 32-Bit Arm7 Cortex-M4 @ 100 MHz
3 mB Flash, 256 kB SRAM, 32-Bit Arm7 Cortex-M4 @ 200 MHz
256 kB SRAM, 24-bit ez80 @ 48 MHz
Python coprocessor: ATSAMD21E18
32-bit Arm Cortex M0 @ 48MHz, 256 kB Flash, 32 kB SRAM
32-bit RISC @ 118 MHz
512 kB SRAM (256K x 16)
8 mB SDRAM
8 mB SDRAM
4mB Serial Flash
8mB Serial Flash
4mB Serial Flash
32 mB Flash ROM
|LCD||320x240 2.8"||320x240 2.8"||320x240 2.8"||384x216|
|Battery||2,200mAH Li-Ion rechargeable||2,200mAH Li-Ion rechargeable||1,200mAH Li-Ion rechargeable||4x AAA|
|Connectivity||USB-C||USB-C||Mini USB OTG||Mini USB OTG + 2.5mm serial I/O|
When it comes to the physical design, the Zero calculator obviously draws inspiration from the TI-84 Plus CE series of calculators. Initially, with the ZGC1 and ZGC2, the entire layout was a direct copy of the CE. However, in a formal complaint, TI raised the issue that consumers may confuse a Zero with a TI product due to the striking resemblance. With the ZGC3, Zero has updated the design to a glossy finish, rounded buttons and a new keyboard layout. These changes help distinguish the appearance from the CE series and hopefully avoid further problems. Unfortunately, these changes also introduce new challenges to the usability of the calculator. We noted the following potential issues:
- The new glossy faceplate looks great out of the box but collects fingerprints. Additionally, it is difficult to clean between the buttons. A more matte finish is more appropriate for things that people touch. Perhaps if they want to keep the glossy faceplate, changing to a lighter color may help reduce the appearance of fingerprints.
- The actuation force of the buttons is quite high and the spherical buttons dig into the fingers, making it uncomfortable to use for extended periods of time.
- The slidecase does not slide properly onto the front of the case. (We were told this is a known issue and they are looking into fixing this)
- The button labels can be difficult to read, particularly in non-ideal lighting conditions.
The ZGC1 had major issues with screen alignment. These were fixed in the second revision, but we are sad to report that they have returned. Additionally, some beta testers have noticed permanent physical damage to the LCD in just a couple of days of everyday use.
We are very divided by Zero. The company appears to have exactly the right motivations: creating a better calculator, one designed to bring something new to the stable, dare we say stagnant, world of graphing calculators. The execution is a different story: the third prototype feels quite far from a production-ready device, riddled with software problems, un-calculator design choices, and hardware usability issues.
One defining characteristic is the choice to try to adhere to the software and hardware design of the TI-84 Plus CE as closely as possible. Zero has never told us that that's the goal, but the first and second prototypes were perfect matches in keyboard layout, and all of the models have software which feels, without putting too fine a point on it, like a knockoff of the TI-84 Plus family OS.
There are notable standouts where the intent of a better calculator shines through: a fast, modern ARM SoC, graphs that cover the entire screen, a fast new BASIC-like language, Python built into every model (not just the expensive, hard-to-find ones). Free from the legacy of years of z80-powered calculators, this could be a revolutionary calculator, but the business goal of making it a drop-in replacement for teachers accustomed to TI's calculators and allowed on exams has, perhaps necessarily, handicapped it.
Perhaps if this calculator had a TI-84 Plus CE compatibility mode, but could break out into a more powerful OS, we'd be over the moon about it. Perhaps if the OS was polished and bug-free, and the hardware was comfortable to use, we'd be thrilled at a new calculator with more potential. Or perhaps if the functionality was similar to TI's calculators but was priced around $60, a price point that would surely still leave Zero plenty of profit margin, we'd applaud even an unpolished calculator accessible to students at more income levels.
As it stands now, the Zero Calculators ZGC3 represents potential rather than fulfillment, a calculator that could be polished and evolved into a better, more powerful bar for calculators. We'll be eagerly waiting to see that potential fulfilled.
- TI-Planet (French): https://tiplanet.org/forum/article.php?t=26386
- Video from TheLastMillennial on Youtube Video from KermMartian on Youtube coming soon