# The Free42 FAQ

This FAQ was last updated on February 10, 2019.

## Contents

Why does my HP-42S program not work properly in Free42?
What happened to the main menu in the Android version?
Why can't the Android version print / export to the SD card?
How can I turn off the key click sound?
Why does OFF not work in the iOS version?
Why does Free42 not show up in the App Store on my iPad?
Why am I getting results that are rounded to integers?
Why am I getting Size Error when I try to access any of the numbered storage registers, or try to use any of the statistics functions?
Why does the standard skin no longer fill the screen on my iPhone X / XR / XS / XS Max?

### Why does my HP-42S program not work properly in Free42?

There are several potential reasons why an HP-42S program might not work correctly in Free42. To get the most obvious out of the way first: make sure to check that you entered the program correctly, and that the relevant settings, such as register size, angular and display modes, etc., are all correct.

Having ruled out human error, the reasons an HP-42S program may not work correctly in Free42 are:

• Different floating-point format

The HP-42S represents numbers with a 12-digit decimal mantissa, and an exponent from 10^(-499) to 10^499; Free42 Decimal uses a 34-digit decimal mantissa, and an exponent from 10^(-6143) to 10^6144; and Free42 Binary uses native binary floating-point, which on all currently supported platforms is IEEE-754 double precision, with a 53-bit binary mantissa which is roughly equivalent to 16 decimal digits, with an exponent from 10^(-308) to 10^308.

These differences can cause Free42 to calculate different results than the HP-42S. For example, 1 ENTER 3 1/x - LASTX - LASTX - returns 1e-12 on the HP-42S but 1e-34 on Free42 Decimal, because of the wider mantissa; 1 ENTER .2 - .2 - .2 - .2 - .2 - returns 0 on the HP-42S but 5.55111512313e-17 on Free42 Binary, because 0.2 is a repeating fraction in binary.

Most of these kinds of compatibility problems can be avoided by using Free42 Decimal, but, although they are rare, there are programs that don't work correctly even in Free42 Decimal. Mostly these are programs that specifically rely on the size of the mantissa and/or the range of the exponent, but the extra precision of Free42 Decimal can also potentially throw off straightforward numerical algorithms, for example, if they use termination conditions that aren't robust.

• Free42 is in Printer On mode by default

The HP-42S is set to Printer Off mode on hard reset, but because Free42 has a built-in printer simulator, I thought it made more sense to have it be set to Printer On mode on hard reset. This has the unfortunate side effect that programs that print but not display their results in Printer On mode may appear to malfunction in Free42. To rule out this possibility, check the Print-Out window for the results you are missing, or switch to Printer Off mode (POFF in the PRINT menu, third row) and try again.

N.B. Since release 2.0.3, hard reset clears flags 21 and 55, bringing its behavior in line with the real HP-42S. However, if such a version is installed as an upgrade, with an older state file still in place, the printer flags will retain their previous value, along with all other state. In other words, the change in 2.0.3 or later only takes effect in new installs, or when the old state file is deleted or corrupted, as indicated by the Memory Clear or State File Corrupt messages.

• Free42 defaults to decimal-point or decimal-comma mode depending on locale

If your computer / smartphone / tablet is set to a locale where the decimal is a comma, Free42 is set to RDX, (radix comma) mode on hard reset; in all other locales, it is set to RDX. (radix dot) mode on hard reset. If you're seeing incorrectly formatted data in your program's output, you may have to switch to RDX. mode (RDX. in the MODES menu, or SF 28).

• In programs, numbers are normalized

This is not actually a difference between Free42 and the HP-42S that causes HP-42S programs to fail in Free42, but it is something that can cause confusion. What's going on?

In programs, the HP-42S stores numbers basically as you enter them. If you want to enter the number 1000 in a program, you can enter 1000, or 1E3; the latter saves one byte, but apart from that, there is no difference.

Free42, on the other hand, stores numbers in programs in floating-point format, which means that the distinction between 1000 and 1E3 is not preserved. When it displays a program line containing a number, it formats the number in whichever way would be the most compact on the HP-42S, so, if you enter 1000, it is displayed as 1E3, but if you enter 10, it is displayed as 10. (When scientific and fixed-point representations are the same length, it chooses the latter, so 100 is displayed as 100, not as 1E2.)

Again, none of this has any effect on how Free42 performs calculations. I am mentioning this here because even though it may appear that Free42 does something differently than the HP-42S, this is a difference you should ignore.

### What happened to the main menu in the Android version?

Starting with release 2.0.22, the Android version of Free42 targets Android 8, or API level 26. Before, it used to target Android 2.2, or API level 8. This change was made mandatory by Google Play for all new updates starting November 1, 2018, and 2.0.22 was the first Free42 release to be affected by this.

Due to this change, certain deprecated app behaviors are no longer supported, and, for reasons only Google can understand, easily discoverable and accessible menus fall under that category. The visible manifestation of this is that the "three dots" trigger, and other menu-activation triggers, are no longer provided.

Fortunately, Free42 has its own built-in menu trigger, and that does still work. You can access the menu by tapping the screen, anywhere below the status bar (or the top of the screen if there is no status bar) down to the top half of the display.

### Why can't the Android version print / export to the SD card?

Under Android 4.4 (KitKat) and later, apps are no longer allowed to write freely to just any location on the SD card.

Apps are still allowed to write to a specific directory, dedicated to just that app. These app-specific directories are named Android/data/<app-id>. In order to allow Free42 to write to your SD card, you should create a directory named Android/data/com.thomasokken.free42 on the SD card. Free42 will be able to write to this directory.

Under Android 6.0 (Marshmallow) or later, Free42 2.0.22 and later no longer automatically receive permission to write to external storage, so you will also have to manually enable this permission in the Settings app.

### How can I turn off the key click sound?

In the Android version, tap in the top part of the screen to bring up the main menu; from the menu, select Preferences. Use Enable Key Clicks and Enable Key Vibration to turn on or off the click sound and haptic feedback, then press OK.

The iOS version does not yet have Enable Key Clicks and Enable Key Vibration settings in its Preferences screen, but you can turn off key clicks by setting the calculator to Quiet mode: QUIET: [Shift] [+/-] [▼] [1/x], or CF 26: [Shift] [6] [1/x] [2] [6]. Note, however, that this turns off all sounds, i.e. the TONE and BEEP functions, and the short beep when you press an incorrect key; controlling key clicks separately from the sounds generated by the calculator is not yet possible.

### Why does OFF not work in the iOS version?

Apple's User Interface guidelines for iOS specify that apps should not have commands for exiting the app; exiting should only take place at the operating system's request, which in turn will only happen when the user presses the home button or uses the task switcher. Thus, the Free42 OFF command causing the app to exit was a violation of those guidelines.

For the longest time, Apple didn't seem to mind, but when I submitted 1.4.75a, it was rejected because of this issue. I had no choice but to comply, and so now, OFF just beeps, and OFF in a program causes the program to stop.

For people who liked and used the original OFF functionality, I added a back door to re-enable that behavior. Follow these steps:

Enter ALPHA mode: [Shift] [ENTER]
Type YESOFF using the ALPHA menu: [XEQ] [√x] [Σ+] [LN] [LN] [1/x] [LOG] [1/x] [1/x] [Σ+] [1/x] [Σ+]
Store the text in the X register using ASTO ST X: [STO] [.] [√x]
Perform OFF: [Shift] [EXIT]

With the string YESOFF in the X register, OFF works again. You only have to do this once; executing OFF this way sets a hidden flag telling Free42 to always perform the old-style OFF behavior from then on, regardless of the contents of the X register.

If you ever uninstall and reinstall Free42, you will have to repeat the procedure. You will not have to repeat the procedure when you get updates.

### Why does Free42 not show up in the App Store on my iPad?

You must select "iPhone Only" in the selector in the top left corner.

Yes, this is highly misleading, because Free42 is not "iPhone only," at least not in the sense that it only runs on iPhones. What Apple means by "iPhone only" are apps that are not designed to take advantage of the iPad's larger screen. Free42 is "iPhone only" in that sense: it runs on iPads, but it acts just like it does on iPhones.

### Why am I getting results that are rounded to integers?

You're doing, say 7 ENTER 2 ÷, in FIX 04 mode, and the result is 3.0000, while it should of course be 3.5000.

When this happens, it's because the calculator is in BASE mode. You can verify this by pressing and holding any of the arithmetic or +/- keys: in BASE mode, they perform BASE÷, BASE×, BASE-, BASE+, and BASE+/-, respectively, and these commands interpret their arguments as 36-bit signed binary integers, and return results within those same constraints.

To get back to normal behavior, leave the BASE application by pressing EXIT until no menu is shown in the display.

### Why am I getting Size Error when I try to access any of the numbered storage registers, or try to use any of the statistics functions?

Usually, Size Error means you're trying to access a numbered register that doesn't exist, i.e. the SIZE setting (in the MODES menu) is set too low. By default, the setting is SIZE 0025, which means you have registers numbered from 00 through 24.

When even RCL 00 returns Size Error, however, that usually means that the REGS matrix was inadvertently deleted. This also causes all statistical functions to fail, since they all use numbered registers to access the summation data.

To fix this, and restore REGS to its default size, say SIZE 0025: [Shift] [+/-] [▼] [Σ+] [0] [0] [2] [5].

### Why does the standard skin no longer fill the screen on my iPhone X / XR / XS / XS Max?

Tap in the top part of the display to bring up the main menu. Press "Select Skin", then select "Standard-X".

Go back.