Great, I'll send a notebook to both of you once I assemble it.
The idea here is I want to assemble operations that will ensure Mathematica (MMA) doesn't use numerical libraries. This has gotten me thinking about what defines a symbolic vs. numerical operation when it comes to that criterion. In MMA, I consider an operation symbolic if it uses one of MMA's symbolic solvers, regardless of whether the expression on which it's operating contains numbers. For instance, it can calculate integrals symbolically using Integrate, or numerically using NIntegrate. Likewise, it can solve simultaneous equations symbolically using Solve, or numerically using NSolve. Hence I consider both of these to be symbolic operations, which would not use the numerical libraries, even though they contain numbers:
View attachment 15001
Furthermore, MMA treats exact numbers (which is what are featured above) as symbolic rather than numerical. While there are exceptions (like 1/2), base-10 non-integers typically can't be exactly represented with a finite binary. For instance, 9/10 is the infinite repeating binary 111001100110011.... However, when you enter 9/10 into MMA (as opposed to 0.9), it treats it as a symbolic entity, as evidence by the fact that you can subsequently convert it to a finite binary with whatever number of digits you please (up to the limits of the system). E.g., if you assign x = 9/10, you can subsequently convert that to a finite binary with 10^8 digits, or 10^9 digits, or 10^10 digits, and so on. Obviously when you make that assignment, MMA isn't storing a finite binary with so many digits. Instead, it is storing that value symbolically, so that subsequent numerical conversion can be done if desired. Thus when these symbolic values are manipulated in MMA (other examples would be Pi and Sqrt[2]), I don't think they would be handled by the numerical libraries. I think they are instead processed within MMA's own software.
For instance, consider this operation:
View attachment 15006
Here the value of z is stored symbolically, since it can be subsequently be expressed numerically with any degree of precision you like (say 10^10 digits). The fact that this can be done would seem to indicate this is not processed by a numerical library, since (I assume) numerical libraries aren't designed to handle symbolics, and would instead need these to first be converted to some type of float, which means that, once the operation was completed, z would be limited in its precision by the type of float used.
Thus I assume something like this, which uses symbolic numbers only, should not use the numerical libraries either:
View attachment 15002
BUT: I'm not a MMA developer, so these are just my inferences. Any thoughts on whether what I've said is correct, or if I need to limit myself to expressions that contain no numbers at all in order to ensure the numerical libraries aren't used (other than powers, since x^2 is just x*x)?
[Note: I'm using "precision" to mean the number of digits, since that's (more or less) MMA's convention for the word. I know that's not the standard usage of "precision".]