# SF (FX-602P)

## Table of Contents

## Description #

Calculates the Superformula for any angle Φ from Φ = 0 degree to Φ = 359 degrees.

\begin{equation} r(\phi) = \frac{1}{ \sqrt[n₁]{ \left| \frac{ \cos \left(\frac{m \phi}{4} \right) }{a} \right|^{n₂} + \left| \frac{ \sin \left(\frac{m \phi}{4} \right) }{b} \right|^{n₃} } } \end{equation}

Variable | Effect |
---|---|

m | edges of shape |

n₁ | resizes the spikes of the shape |

n₂ | defines shape |

n₃ | defines shape |

a | resize cos aspect of shape |

b | resize sin aspect of shape |

Φ | angle from 0 … 360 (0 … 2π) |

r | resulting distance from orgin |

**Note:** If A and B are different then the shape might not form a closed loop.

## Sample input #

### Circle #

Using these values the Superformula should give a figure looking like a circle: \(a=1;\ b=1;\ n_1=2;\ n_2=2;\ n_3=2;

m=2 \).

## How the code works #

For quick input the values for n₁, n₂, n₃ and m are pre-set with value 2 but can instead be overwritten if different.

Then in `P0`

the angle is set to 0 degree and is incremented by 1 at the ending of the program.

To obtain a full circle the Memory Register 06 (`MR06`

) is set to the end value “359”. (In run mode `MR06`

is actually
to enter to recall the memory register for register 06.)

## Sample output #

The program generated coordinate pairs, as pasted and copied out of the printer simulation:

```
+X= +Y=
1.0000 0.0000
1.0000 0.0175
0.9994 0.0349
0.9986 0.0523
0.9976 0.0698
…
0.0698 0.9976
0.0523 0.9986
0.0349 0.9994
0.0175 1.0000
0.0000 1.0000
-0.0175 1.0000
-0.0349 0.9994
-0.0523 0.9986
-0.0698 0.9976
-0.0872 0.9962
…
-0.9976 0.0698
-0.9986 0.0523
-0.9994 0.0349
-1.0000 0.0175
-1.0000 0.0000
-1.0000 -0.0175
-0.9994 -0.0349
-0.9986 -0.0523
-0.9976 -0.0698
-0.9962 -0.0872
…
-0.0872 -0.9962
-0.0698 -0.9976
-0.0523 -0.9986
-0.0349 -0.9994
-0.0175 -1.0000
0.0000 -1.0000
0.0175 -1.0000
0.0349 -0.9994
0.0523 -0.9986
0.0698 -0.9976
…
0.9945 -0.1045
0.9962 -0.0872
0.9976 -0.0698
0.9986 -0.0523
0.9994 -0.0349
1.0000 -0.0175
End.
```

## Interpretation #

Here the angle Φ runs through a full rotation if register `MR06`

is set to the
value 360.

## Program #

The program file contains the one programs `P0`

that looks like this:

## SF2.pf #

```
PROGRAM LIST
File : SF2
*** P0
MAC 0 Min0F 360
Min06 “N1?” PAUSE 2
HLT Min01 “N2?”
PAUSE 2 HLT Min02 “N
3?” PAUSE 2 HLT
Min03 “M?” PAUSE 2
HLT Min04 1 Min08 1
Min09 “+X= +Y=”
SAVE invEXE
LBL0
MR0F × MR04 ÷ 4 =
Min05 cos ÷ MR08 =
abs X^y MR02 = Min07
MR05 sin ÷ MR09 =
abs X^y MR03 = M+07
MR07 X^⅟y MR01 1/x =
P→R MR0F = FIX4 “ #”
X↔Y FIX4 “; #” SAVE
invEXE 1 M+0F MR06
x=F GOTO1
GOTO0
LBL1
“End.” SAVE invEXE
···127 steps
```

Download SF2.pf
## Memory registers #

While using the same variable names as in the Wikipedia article, the memory registers are set as follows:

Memory | Content |
---|---|

M01 | n₁ |

M02 | n₂ |

M03 | n₃ |

M04 | m |

M05 | \( \frac{m \phi}{4} \) |

M06 | 360 |

M07 | r |

M08 | a |

M09 | b |

M0F | Φ |

## To the developer #

The display cannot hold both coordinates at the same time that the values are scrolled through which is very time consuming.

I suggest you to code a switch in the simulator for allowing to turn off the display of to be printed values, while the display can show a counter value instead.

## Author #

Michael Malien, Facebook