# Computer For Number

Computer For Number

A function for "a natural number"，actually an array of interger.

All operations are on numbers,includes values,codes,variable for judgment,and instruction address.

## Components

Length(L): the range of each number.The number will be from -L to L-1 .

if a number becomes outsize of the range ,it should be made inside by add or sub by 2L

arr: An arr of intergers.

arr[Index]: The interger at n.Values are also able to be indexs.

C: arr[0] , The instruction address.

P: arr[1] , The variable for judgment.

## Operation

loop to do the function until halt.

get C as arr[0] (referance,operations on these are the same as on values,not get value)

if C == 0 halt.

P as arr[1] (referance)

C1 as arr[C]

C2 as arr[C+1]

V1 as arr[C1] (referance)

V2 as arr[C2]

if P>=0 { set V1 as V1-V2 }

P=-P

C=C+2

C# code (I believe you can know what it is)(return true means halt)

bool ComputerForNumberFn(Array arr) { ref int c =ref arr[0]; if (c==0) return true; ref int p =ref arr[1]; if (p<0) { int C1 = arr[c]; int C2 = arr[c+1]; ref int V1 =ref arr[C1]; int V2 = arr[C2]; V1 = V1 - V2; //arr[arr[c]] +=arr[arr[c + 1]]; } p = -p; c = c + 2; return false; }

notice C1,C2 are also can be 0,or 1.

## Computer For Number Marked

This language makes us able to know better about CFN program.

We can set a Name for a number.

Only match

<A:B>

<Length:128>

Set the Length as 128

<Index(Name):Value>

Set a Name for the Index,and set arr[index] as Value.

It is able to not have Name

Index is default to be last index +1

Value is default to be 0

<:>> is required.

All the texts didn't matched are annotation.

Value is also able to be Name,and it will be replaced by the index.

Specially FromIndex=>ToIndex

... <(TestFnAGotoB):C> <:TestFnAGotoBV> ... <(TestFnB):...> ... <(TestFnAGotoBV):TestFnAGotoB=>TestFnB>

FromIndex=>ToIndex will be replaced to the value for goto

Specially <BitLength:BL> equals to <Length:2^{BL-1}>

because it is easy to be implemented.

## Examples

Multiplication

<BitLength:20> <0(C):MulStart> <(P):> <(EndC):0><:EndV><(EndV):EndC=>0> Makes <C> <C> does halt <(V1):1> <10(MulV1):95> <(MulV2):82> arguments <(MulRes):> result,=MulV1*MulV2 <(MulTempV1):><(MulTempV2):><(MulGotoEndV):MulGotoEnd=>MulEnd><(MulGotoLoopV):MulGotoLoop=>MulLoop> <(MulStart):MulTempV1><:MulV2> <:MulTempV2><:MulTempV1> <:MulV2><:MulV2> <:MulV2><:MulTempV2> <:MulTempV2><:MulTempV2> <:MulTempV1><:MulTempV1>Set MulV2 Neg <:MulV1><:V1> <(MulLoop):P><:P> <:P><:P> <:MulRes><:MulV2> <:MulV1><:V1> MulRes+ ,V1-=1 <:P><:MulV1> <(MulGotoLoop):C><:MulGotoLoopV> if V1>=0 Loop <:P><:P> if V1<0 end <(MulGotoEnd):C><:MulGotoEndV> <(MulEnd):MulV2><:MulV2> <:C><:C>

### Conventions

You can choose one

Cleaning programing: If you used a value,you'd better clear it after using.

Defensing programing:If you need a value,you'd better clear it at first.

## Thinking

It is obviously turing complete

### ComputerForNumber

This is a function for a number.(a)=>(a+1) is also a function for a number.Why CFN is turing complete but some not?

### When ∞

when Length=∞

The operated numbers can be a Real number.

"the sharpened number" is actually a FUNCTION,"+1" is actually +dx

### Chaitin's value

when Length isn't ∞ we can calculate it's Chaitin's value.