abweichung=0.0001 !»» tolerance for comparation
PUT 1,4,7,2,4,3,9 !»» values on stack
GOSUB 100 !»» call sort algorithm
IF nsp THEN VALUES "var" GET(nsp), CUSTOM
END
! ### Sort buffer and ignore doubles
100:
DO
srtn=nsp : srt=0 : i=1
WHILE i<=srtn AND srtn>1 AND nsp DO
IF i=1 THEN
srt1=get(1) !»» first value
ELSE
srt2=get(1)
IF ABS(srt1-srt2)<abweichung THEN
!»» values are identical
WHILE ABS(srt1-srt2)<abweichung AND nsp DO
i=i+1 : srt2=get(1) !»» pull next one
ENDWHILE
ENDIF
IF srt1<srt2 THEN
PUT srt1 !»» First first
ELSE
IF srt1>srt2 THEN
PUT srt2 !»» Second first
srt2=srt1 : srt=1
ENDIF
ENDIF
srt1=srt2 !»» Prepare next round
ENDIF
i=i+1
ENDWHILE
PUT srt2 !»» Rescue last one
WHILE srt AND nsp>1
RETURN