Squares

General FreeBASIC programming questions.
Locked
dafhi
Posts: 1641
Joined: Jun 04, 2005 9:51

Re: Squares

Post by dafhi »

finally got my new particle system working

updated here
Last edited by dafhi on Aug 04, 2014 15:26, edited 1 time in total.
albert
Posts: 6000
Joined: Sep 28, 2006 2:41
Location: California, USA

Re: Squares

Post by albert »

@Daphi

It looks real cool, nice fireworks display!!

But it only compiles with FB 024 not 90 or 91 or the newest mingw32
fxm
Moderator
Posts: 12106
Joined: Apr 22, 2009 12:46
Location: Paris suburbs, FRANCE

Re: Squares

Post by fxm »

This doesn't compile only for fbc 0.91, due to the added check:
#438: Checking of parameter initializer expressions: When a parameter has a different initializer in the procedure prototype and in the procedure body, a warning will be shown now. Previously, the compiler silently ignored the initializer from the body and always used the one from the prototype.
Correct the coherence (v_avg= and v_var=) between:
(144) declare sub defaults(a_avg as single = 0.75, a_var as single = 0.5, v_avg as single = 0.0, v_var as single = 0.0)
and:
(155) sub tStatRand.defaults(a_avg as single = 0.75, a_var as single = 0.5, v_avg as single = 0.5, v_var as single = 0.25)
dodicat
Posts: 7983
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: Squares

Post by dodicat »

Yes, nice one Dafhi.
if you do in type tStatRand
declare sub defaults(a_avg as single , a_var as single , v_avg as single , v_var as single )
and then in your constructor set the defaults:

constructor tStatRand
defaults(.75,.5,0,0)
end constructor
It'll work in the latest Fb version.
fxm
Moderator
Posts: 12106
Joined: Apr 22, 2009 12:46
Location: Paris suburbs, FRANCE

Re: Squares

Post by fxm »

@dkl

About the above warning from fbc 0.91 when there is an initializer incoherence between the declaration and the body header:

Code: Select all

Type UDT
  Dim As Integer i
  Declare Sub s (Byval i0 As Integer = 0)
End Type

Sub UDT.s (Byval i0 As Integer = 1)
  i = i0
  this.i = i0
End Sub
Compiler output:
.....\FBIDETEMP.bas(6) warning 36(0): Mismatching parameter initializer, at parameter 1 (i0) of s()
.....\FBIDETEMP.bas(7) error 214: Only static members can be accessed from static functions, found 'i' in 'i = i0'
.....\FBIDETEMP.bas(8) error 41: Variable not declared, this in 'this.i = i0'

Why the warning on incoherent initializers induces the member procedure to become static for the compiler causing nonexistent errors?
dkl
Site Admin
Posts: 3235
Joined: Jul 28, 2005 14:45
Location: Germany

Re: Squares

Post by dkl »

Nice find, it should be fixed in Git now.
dafhi
Posts: 1641
Joined: Jun 04, 2005 9:51

Re: Squares

Post by dafhi »

I never had problems with 0.91, but always glad to be of assistance :D
dodicat
Posts: 7983
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: Squares

Post by dodicat »

Twenty four Seven dedicated FreeBASIC coder:

Code: Select all

redim shared as uinteger a(37,59)
DATA _
&HFFE8EFEF,&HFFF4F4F8,&HFFFFFDFE,&HFFFDFEFC,&HFFFCFCFA,&HFFFBFEFC,&HFFFAFFFB,&HFFF9FCF8,_
&HFFFAFDFA,&HFFFDFDF9,&HFFFBF7F3,&HFFFBFCF8,&HFFF6FCF7,&HFFF6FDFB,&HFFFFFFFF,&HFFFFFFFF,_
&HFFFBFAFC,&HFFF1F1F2,&HFFE0DFDF,&HFFD4D2D2,&HFFC7C4C3,&HFFAAA7A4,&HFF969696,&HFFA9A9A7,_
&HFFB0B2B1,&HFFADAFAE,&HFFBDBCBE,&HFFDDDBDC,&HFFEBEAEA,&HFFF5F4F4,&HFFFFFDFE,&HFFF9F9F9,_
&HFFD7DFE1,&HFFDEEBEE,&HFFFCFFFF,&HFFF8FEFF,&HFFF7FEFF,&HFFF5FEFF,&HFFF4FEFF,&HFFF8FFFF,_
&HFFF1FDFD,&HFFEEFCFF,&HFFF4FDFF,&HFFF4F9FB,&HFFE9EFF2,&HFFF8FCFD,&HFFD5D8D3,&HFF58564D,_
&HFF989185,&HFFB0A895,&HFFC8BBA4,&HFFEAE3CC,&HFF9E9C8D,&HFF6F6D60,&HFF717166,&HFF51534C,_
&HFF414744,&HFF2A3131,&HFF40494E,&HFF000000,&HFFE4ECF1,&HFFF1F9FD,&HFFF7FEFE,&HFFEDFDFD,_
&HFFF3FFFF,&HFFF3FFFF,&HFFEFFFFF,&HFFF5FFFF,&HFFF3FEFD,&HFFEDF8F5,&HFFFAFBFB,&HFFFFFFFE,_
&HFFFFFFFF,&HFFFFFFFF,&HFFDFDBD8,&HFF898382,&HFF544E52,&HFF3F383A,&HFF190E10,&HFF070000,_
&HFF0A0000,&HFF0E0000,&HFF0C0100,&HFF090000,&HFF100600,&HFF080000,&HFF030000,&HFF190909,_
&HFF382524,&HFF4A3B3C,&HFF675453,&HFF554B4A,&HFF756B66,&HFFC9BFBC,&HFFEDE0DE,&HFFF6EAE7,_
&HFFF7EFEE,&HFFFFF5F3,&HFFF7ECE8,&HFFFCF8F6,&HFFFDFFFD,&HFFF8F5F4,&HFFEDEFF7,&HFFEFF2F6,_
&HFFE6E8E7,&HFFDFE2DE,&HFFC9CDCB,&HFF878785,&HFF90918E,&HFFA19E96,&HFFDBD7C5,&HFF96927D,_
&HFF837E6B,&HFF797664,&HFF646253,&HFF37372F,&HFF555752,&HFF787E7E,&HFF4D565C,&HFF000000,_
&HFF758891,&HFF8599A5,&HFF86A2B0,&HFF95B6C1,&HFFA1C0CC,&HFFA6C6CF,&HFFAFCDD3,&HFFB4D0D5,_
&HFFBDD0D3,&HFFD0DCDD,&HFFFFFFFF,&HFFDFDCD8,&HFF9A8879,&HFF726051,&HFF4E3B33,&HFF23110D,_
&HFF160406,&HFF2A1919,&HFF2E1B18,&HFF1D0705,&HFF230B05,&HFF30190D,&HFF1F0B04,&HFF271206,_
&HFF31180D,&HFF2A0D03,&HFF170000,&HFF160000,&HFF2A0300,&HFF2D0900,&HFF3A1108,&HFF3E180E,_
&HFF432215,&HFF2F0E0B,&HFF4F2720,&HFF724941,&HFFA57A73,&HFFDCB2A7,&HFFA68077,&HFF9C7F72,_
&HFFD0B9AA,&HFFE8D8D3,&HFFCBC3D0,&HFFBCB6BB,&HFF9B978F,&HFF736E64,&HFF79746F,&HFF938C8F,_
&HFF888284,&HFFC2BDB7,&HFFA4A38F,&HFF6D6952,&HFF8F8873,&HFF756E5C,&HFF8A8474,&HFF7C7B6F,_
&HFF6F7169,&HFF5A5F5D,&HFF4F5758,&HFF000000,&HFF718487,&HFF90A2AE,&HFFBACBDA,&HFFD2E4ED,_
&HFFCEE0E9,&HFFC4D8E2,&HFFCCDEE3,&HFFCBD9DC,&HFFD1D4D2,&HFFF0EBE7,&HFF93867B,&HFF472E1E,_
&HFF4A2613,&HFF4B291A,&HFF391C16,&HFF1B0808,&HFF230D0E,&HFF210D10,&HFF1C0505,&HFF1B0000,_
&HFF100000,&HFF190000,&HFF230800,&HFF130000,&HFF0B0101,&HFF2A0E0C,&HFF4F251D,&HFF78483B,_
&HFFA26A57,&HFFB57867,&HFFCC8D79,&HFFC58B75,&HFFCA9480,&HFFC9917D,&HFFBD7F6D,&HFFB26D5D,_
&HFFB87262,&HFFAA6655,&HFFA26351,&HFF7F4834,&HFF87583D,&HFFE4BBAD,&HFFE0BCBD,&HFFECCCC2,_
&HFFE9CEB4,&HFFA78F73,&HFF9A8271,&HFFA3908B,&HFFA49494,&HFFF9EDE3,&HFF878069,&HFF726A4D,_
&HFF8E8268,&HFF695F47,&HFF504A34,&HFF433E2F,&HFF1C1C11,&HFF2F332C,&HFF252C2C,&HFF000000,_
&HFF708488,&HFFD0DAE1,&HFFFFFFFF,&HFFFFFBFD,&HFFFFFFFE,&HFFFFFFFF,&HFFFFFFFF,&HFFCBC2BC,_
&HFF907C70,&HFF816350,&HFF5C3520,&HFF5B321B,&HFF5E3827,&HFF472319,&HFF170100,&HFF0B0000,_
&HFF180100,&HFF321D1E,&HFF553736,&HFF553931,&HFF452620,&HFF4D3028,&HFF573932,&HFF684A40,_
&HFF855F58,&HFFA3796D,&HFFA37566,&HFFAB7666,&HFFBA7F6E,&HFFBB7A67,&HFFCC8775,&HFFC88570,_
&HFFCF907A,&HFFD99681,&HFFCB8271,&HFFBE6F5F,&HFFAF6250,&HFFAF6452,&HFFAA6551,&HFFAB6B57,_
&HFFA36951,&HFF955D4A,&HFF945E52,&HFF8F5D47,&HFFA37854,&HFF97704E,&HFF98735C,&HFFB1928A,_
&HFFCCB3AF,&HFFAD978D,&HFF7F7053,&HFF7D6F4F,&HFF6A5A3F,&HFF4D4026,&HFF40351F,&HFF483F2F,_
&HFF3E3C2F,&HFF30312A,&HFF121715,&HFF000000,&HFF7C8D90,&HFFDCE7EC,&HFFFAFFFF,&HFFF7F7FC,_
&HFFFFFFFF,&HFFFAF4F0,&HFF95877F,&HFF341C0E,&HFF321606,&HFF634231,&HFF4F2B18,&HFF402016,_
&HFF261114,&HFF1A0002,&HFF1C0000,&HFF5F3A31,&HFFA47767,&HFFB07D6C,&HFFB6826C,&HFFAB7963,_
&HFFAE7D65,&HFFB6856C,&HFFBC896A,&HFFBD846D,&HFFBB7C6F,&HFF895149,&HFF5D2F29,&HFF613E33,_
&HFF6E4A3E,&HFF7D5142,&HFFB87D6E,&HFFD18C7B,&HFFD2907E,&HFFD59483,&HFFC98C80,&HFFAB6E63,_
&HFFA2655C,&HFFA4675C,&HFF9E6355,&HFFA06357,&HFFAA6B5C,&HFFB37661,&HFFAE735C,&HFFA86C53,_
&HFFAE7459,&HFFA86C56,&HFF9E6551,&HFF905A4D,&HFF905E50,&HFF855446,&HFF8C604B,&HFF784C35,_
&HFF9C745D,&HFF947159,&HFF80644F,&HFF726152,&HFF666055,&HFF5F5C56,&HFF585C5A,&HFF000000,_
&HFFC9D3D6,&HFFF8FFFF,&HFFF7FEFF,&HFFF8FDFE,&HFFB4B4B6,&HFF665C5A,&HFF342119,&HFF513B32,_
&HFF674E43,&HFF71534B,&HFF3F2419,&HFF2C1711,&HFF190F12,&HFF2C1713,&HFF7E5D52,&HFFD6AA96,_
&HFFD8A288,&HFFC98C6E,&HFFC58567,&HFFC9886C,&HFFCE9076,&HFFD39977,&HFFC68960,&HFFAE6B4D,_
&HFF97513E,&HFF4F150F,&HFF58302E,&HFF513A36,&HFF5E4A41,&HFF614439,&HFF8D5D53,&HFFD4978D,_
&HFFD29588,&HFFD0958A,&HFFC08C85,&HFFAB7C78,&HFF9B6E68,&HFF926761,&HFF996562,&HFF9B635C,_
&HFFA56A61,&HFFAF7363,&HFFB37A5E,&HFFB57A63,&HFFB47664,&HFFAD7162,&HFFAA6C5E,&HFFA06255,_
&HFF995C4B,&HFF995F4E,&HFF9A6151,&HFF976352,&HFF8E5E4F,&HFF835B4E,&HFF6B4C41,&HFF38251D,_
&HFF413A33,&HFF42413F,&HFF353A3D,&HFF000000,&HFFD5DDE1,&HFFF6FEFF,&HFFFFFFFF,&HFFD8DBE3,_
&HFF2A2A32,&HFF160E10,&HFF3B2E2A,&HFF392721,&HFF3E2923,&HFF453026,&HFF2E150F,&HFF0B0000,_
&HFF1C0D09,&HFF9F7E71,&HFFD6AF9E,&HFFBF9079,&HFFCE997C,&HFFCD9176,&HFFC78B6F,&HFFCA9076,_
&HFFD19782,&HFFCE977B,&HFFDAA37D,&HFFA06549,&HFF521809,&HFF4E1C15,&HFF61413E,&HFF6B5854,_
&HFF423430,&HFF3E261F,&HFF87625B,&HFFC89792,&HFFC38D83,&HFFBD8A83,&HFFB4847F,&HFFAB7C7B,_
&HFFA07272,&HFF986967,&HFF9E6D6A,&HFFA16C69,&HFFA76F69,&HFFAC756B,&HFFB07E6C,&HFFB07C6A,_
&HFFAD7568,&HFFAD7468,&HFFA76F61,&HFF996356,&HFF986457,&HFF9A6657,&HFF9A6B59,&HFF986E5F,_
&HFF88635E,&HFF6E4E4A,&HFF533C37,&HFF19100F,&HFF150E0D,&HFF19181A,&HFF14171E,&HFF000000,_
&HFFDBDFE0,&HFFFFFFFF,&HFF879099,&HFF272A38,&HFF0E0D12,&HFF292222,&HFF312421,&HFF34211B,_
&HFF311C16,&HFF331D11,&HFF0C0000,&HFF1D0D0B,&HFFC5A28E,&HFFF7D2BA,&HFFD6AA91,&HFFDEAC8D,_
&HFFDDA688,&HFFD3977A,&HFFD0947A,&HFFCE927C,&HFFD49B87,&HFFDBA38B,&HFFF3BD9A,&HFF99654A,_
&HFF3C0900,&HFF502D25,&HFF725B5A,&HFF746766,&HFF332C2C,&HFF524343,&HFF7D6668,&HFFA88484,_
&HFFAC817E,&HFFA87F7C,&HFFA37A7A,&HFFA1797A,&HFF9E7575,&HFF9F7074,&HFFA27578,&HFFA57777,_
&HFFAB7A77,&HFFB07F7B,&HFFB1837D,&HFFAE7E76,&HFFAB7870,&HFFAC786F,&HFFA06C61,&HFF946355,_
&HFF936356,&HFF9E7063,&HFF9B7462,&HFF8D6960,&HFF846667,&HFF745B5C,&HFF645053,&HFF4A3B3C,_
&HFF140C0F,&HFF040104,&HFF09070D,&HFF000000,&HFFE9EAE8,&HFFFFFFFF,&HFF3B373B,&HFF000000,_
&HFF2B2122,&HFF564946,&HFF5C4A42,&HFF4D352D,&HFF3E251A,&HFF3D1D13,&HFF543429,&HFFB5907D,_
&HFFFFF1D2,&HFFF3C9A8,&HFFEBBA98,&HFFDDA886,&HFFD69B7D,&HFFD2987B,&HFFD49B85,&HFFCF9584,_
&HFFDEA399,&HFFEBB4A3,&HFFE5B295,&HFF84543E,&HFF3F190A,&HFF644C47,&HFF847777,&HFF797579,_
&HFF1B1920,&HFF4D484D,&HFF756C74,&HFF8C767C,&HFF997A7D,&HFF99777B,&HFF99797C,&HFF9D787A,_
&HFFA0777F,&HFFA57980,&HFFA5787D,&HFFA7797C,&HFFAC8082,&HFFB08589,&HFFAD8287,&HFFA37878,_
&HFFA87977,&HFFA67770,&HFF905F53,&HFF895C50,&HFF7A5043,&HFF785246,&HFF8F6F62,&HFF9C7C76,_
&HFF94777E,&HFF8E7379,&HFF765D62,&HFF624B4C,&HFF4C3738,&HFF473735,&HFF302023,&HFF000000,_
&HFFFFFEFD,&HFFD9D2D0,&HFF332826,&HFF190E0A,&HFF57423C,&HFF604B43,&HFF51362A,&HFF46271B,_
&HFF3A1807,&HFF5A3322,&HFFAD826F,&HFFC2947C,&HFFFFE5C2,&HFFFDD2B0,&HFFECB795,&HFFDEA788,_
&HFFD79E81,&HFFC89076,&HFFCD9380,&HFFD1998A,&HFFEEB4A9,&HFFE9B3A4,&HFFCA9983,&HFF7D543F,_
&HFF1B0600,&HFF60534E,&HFF938C8E,&HFF85848B,&HFF01030A,&HFF0A0911,&HFF292833,&HFF877C85,_
&HFF917D80,&HFF93777C,&HFF9C7D84,&HFFA07B80,&HFF997075,&HFFA1757C,&HFFAE7E85,&HFFAE8288,_
&HFFAC8185,&HFFA78085,&HFFA58086,&HFFAA8387,&HFFAF837F,&HFF906057,&HFF906254,&HFF94695A,_
&HFF754E3F,&HFF6A493C,&HFF886B61,&HFF9D807D,&HFF97797B,&HFF87686B,&HFF755655,&HFF644641,_
&HFF563831,&HFF573832,&HFF51332F,&HFF000000,&HFFDCD8D5,&HFF211817,&HFF180802,&HFF3D231B,_
&HFF53372C,&HFF4A2E21,&HFF3A1B0E,&HFF411D0D,&HFF3A1301,&HFF825540,&HFF8A5A45,&HFF915E45,_
&HFFE6B797,&HFFF1BE9D,&HFFEEB99B,&HFFE2AC8F,&HFFCB927C,&HFFD59D89,&HFFD8A18F,&HFFD89F91,_
&HFFECB2A8,&HFFD8A093,&HFFBE8D7E,&HFF876253,&HFF090200,&HFF352E26,&HFFA7A5A6,&HFFA09EA7,_
&HFF251F2A,&HFF282433,&HFF10101F,&HFF837E88,&HFF8F7F85,&HFF8D767D,&HFF9E7F87,&HFF9B727A,_
&HFF95666C,&HFFA5747A,&HFFB38287,&HFFB5868B,&HFFAE8286,&HFFA57F84,&HFFA58388,&HFFB18989,_
&HFF8A5E57,&HFF825143,&HFF936250,&HFF8F614E,&HFF795140,&HFF725042,&HFF7B5E59,&HFF816360,_
&HFF836264,&HFF825F5D,&HFF7F5A55,&HFF785248,&HFF653F34,&HFF573125,&HFF4F2A20,&HFF000000,_
&HFF4F4944,&HFF190A07,&HFF381E15,&HFF30160D,&HFF543830,&HFF391E14,&HFF32150A,&HFF3A190F,_
&HFF643E31,&HFF714433,&HFF693925,&HFF75452F,&HFFA5715B,&HFFC7917B,&HFFC38F79,&HFFCE9A88,_
&HFFC38F7D,&HFFD09A8B,&HFFDDA597,&HFFDBA398,&HFFE6ACA2,&HFFD0968C,&HFFD19F98,&HFF98776E,_
&HFF1B0C06,&HFF171611,&HFF79797A,&HFFA8A2AA,&HFF1B131E,&HFF221927,&HFF5A5A67,&HFF8F8D99,_
&HFF887B7D,&HFFA28E92,&HFFA28285,&HFF8B5F62,&HFFA06D70,&HFFB37B7B,&HFFBA8084,&HFFAE7B7F,_
&HFFB48386,&HFFB68D8E,&HFFB69393,&HFF966D69,&HFF714435,&HFF92604B,&HFF8C563D,&HFF8D593F,_
&HFF80513F,&HFF60392D,&HFF644543,&HFF795C5B,&HFF826365,&HFF836461,&HFF84615B,&HFF836055,_
&HFF7F584D,&HFF6D453A,&HFF4F2A20,&HFF000000,&HFF21120D,&HFF33211A,&HFF1F0802,&HFF37221D,_
&HFF3D2B27,&HFF271512,&HFF220D09,&HFF412923,&HFF5A3C32,&HFF5B362A,&HFF4F2619,&HFF4F2212,_
&HFF9B675A,&HFFB9867A,&HFFAD7B6F,&HFFB5827A,&HFFBB877D,&HFFC9958A,&HFFD39F92,&HFFD19A8C,_
&HFFDAA093,&HFFCA8F88,&HFFC38F8C,&HFFAC8D87,&HFF3E332B,&HFF000000,&HFF595A58,&HFF898087,_
&HFF53414F,&HFF998C9B,&HFF9D9CA8,&HFF605E65,&HFF8B8180,&HFF9E8D8C,&HFF7D5B5B,&HFF8E5F5F,_
&HFFA46E6D,&HFFBE7F81,&HFFB57879,&HFFA36C6B,&HFFAE7D7C,&HFFAF8384,&HFF906B67,&HFF7F564A,_
&HFF90604D,&HFF8B5539,&HFF925739,&HFF895232,&HFF7B4732,&HFF42170C,&HFF512D2A,&HFF715356,_
&HFF766065,&HFF806869,&HFF836965,&HFF896A63,&HFF89675F,&HFF7C5B53,&HFF5D3E39,&HFF000000,_
&HFF3D2C28,&HFF301E19,&HFF1D0E09,&HFF352625,&HFF332525,&HFF1A0F10,&HFF1F0E10,&HFF433232,_
&HFF3E2523,&HFF3B1E19,&HFF331308,&HFF431C12,&HFF7A4841,&HFF905D58,&HFF986762,&HFFA7756F,_
&HFFB4847D,&HFFC8958F,&HFFCE9891,&HFFC89086,&HFFD59A8E,&HFFCB918A,&HFFBC8C8E,&HFFBC9D9A,_
&HFF58514A,&HFF0C0E09,&HFF4C4B4C,&HFF83777D,&HFF634C59,&HFF63505D,&HFF524855,&HFF767176,_
&HFF817475,&HFF644D4D,&HFF65413E,&HFF804E4A,&HFFA36765,&HFFB26F6D,&HFF9A5957,&HFF9F6361,_
&HFFAA7672,&HFF8B5D58,&HFF7F5953,&HFFB6877B,&HFF8B563E,&HFF753B1C,&HFF894C2B,&HFF85492C,_
&HFF753E29,&HFF43180C,&HFF4C2625,&HFF5A3E44,&HFF66555F,&HFF847175,&HFF8C7675,&HFF856F67,_
&HFF7A6159,&HFF7B625D,&HFF6D5454,&HFF000000,&HFF3F332E,&HFF231711,&HFF2F211B,&HFF3F312D,_
&HFF241515,&HFF160708,&HFF2E1E1F,&HFF352527,&HFF2B1A1B,&HFF25110E,&HFF291711,&HFF432924,_
&HFF6A413C,&HFF825753,&HFF865A58,&HFF946763,&HFFAD817E,&HFFB58888,&HFFC19393,&HFFC39394,_
&HFFC49395,&HFFBE9195,&HFFB5989E,&HFFBEA5AC,&HFF7A676E,&HFF22101A,&HFF412F3B,&HFF715E67,_
&HFF725861,&HFF81666D,&HFF7E6567,&HFF6C5054,&HFF522D31,&HFF55292C,&HFF74403C,&HFF7F453D,_
&HFFA76259,&HFF985043,&HFFA96154,&HFFDD978A,&HFFC48172,&HFF854841,&HFF966263,&HFFC38E89,_
&HFF804A39,&HFF8A533B,&HFF986147,&HFF67321A,&HFF6B3B2A,&HFF4B1E1B,&HFF592E32,&HFF5D3A42,_
&HFF634F50,&HFF887174,&HFF85696C,&HFF6D5055,&HFF694D50,&HFF705458,&HFF645056,&HFF000000,_
&HFF332A25,&HFF1D130D,&HFF3A2E25,&HFF352822,&HFF1D0D0C,&HFF1E0E0E,&HFF2E1D1E,&HFF2D1E1F,_
&HFF261816,&HFF261915,&HFF30251F,&HFF423129,&HFF4E2D27,&HFF64443C,&HFF74514F,&HFF7E5B5A,_
&HFF9E7978,&HFFA88383,&HFFAD8A88,&HFFB38D90,&HFFB89092,&HFFB8959A,&HFFB39CA4,&HFFBAA4AE,_
&HFF9E8693,&HFF5B4551,&HFF5B4652,&HFF745E69,&HFF624D52,&HFF644C4E,&HFF654A48,&HFF502F2F,_
&HFF5C2F38,&HFF64353A,&HFF7A4643,&HFFB17570,&HFFC5867D,&HFFDEA99C,&HFFF2B6AB,&HFFCF8B80,_
&HFFAD6A5F,&HFF7A403C,&HFF613337,&HFF5E3330,&HFF683C30,&HFF835643,&HFF734931,&HFF663D29,_
&HFF774E43,&HFF411C19,&HFF57313B,&HFF6B4C55,&HFF644C50,&HFF755D62,&HFF72545D,&HFF73535C,_
&HFF84646E,&HFF795C65,&HFF6C585C,&HFF000000,&HFF3D362C,&HFF352B23,&HFF342821,&HFF291C17,_
&HFF1A0D0C,&HFF201313,&HFF27191B,&HFF2A1D1C,&HFF261818,&HFF2B1F1C,&HFF3B3028,&HFF483930,_
&HFF39231B,&HFF432B25,&HFF5F4541,&HFF69504A,&HFF886C69,&HFF987D79,&HFFA28484,&HFFAD8F91,_
&HFFAE8E90,&HFFAF9494,&HFFB8A0A4,&HFFBBA4AA,&HFFAF9AA2,&HFF84727E,&HFF6B5C66,&HFF786872,_
&HFF67565F,&HFF564449,&HFF4E3C3D,&HFF54393E,&HFF66404C,&HFF8B636D,&HFFE7BDC4,&HFFEBB9BE,_
&HFFEEC0C1,&HFFF3CBC8,&HFFDCA9A7,&HFFBF8889,&HFFB88481,&HFF9E7579,&HFF856C70,&HFF583F3C,_
&HFF60473B,&HFF7E6250,&HFF7D5F4A,&HFF684C38,&HFF795C52,&HFF4B2F2E,&HFF432733,&HFF806674,_
&HFF6F5D64,&HFF645059,&HFF795E6A,&HFF947780,&HFFA4878E,&HFF8A7378,&HFF7A686C,&HFF000000,_
&HFF3B322B,&HFF332920,&HFF2A1F17,&HFF281E1A,&HFF1F1511,&HFF24191B,&HFF201617,&HFF261C1D,_
&HFF241A19,&HFF2B211F,&HFF372E29,&HFF352C24,&HFF2F1E18,&HFF33231C,&HFF4B3834,&HFF695652,_
&HFF867572,&HFF8A7678,&HFF9D8788,&HFFAF9A9B,&HFFA78E91,&HFFA68E90,&HFFB79EA1,&HFFBAA3A9,_
&HFFAA9B9E,&HFF92848A,&HFF7C717A,&HFF7F747D,&HFF877D86,&HFF7C7178,&HFF6E656A,&HFF77636D,_
&HFF8D7180,&HFFA68597,&HFFBA99A6,&HFFB48E9B,&HFFBE97A2,&HFFC8A1A9,&HFFBC97A1,&HFFC19EAA,_
&HFFE0BAC6,&HFFA9929C,&HFF857F87,&HFF7B7575,&HFF948983,&HFF7B7162,&HFF645543,&HFF584737,_
&HFF826E6A,&HFF7C676C,&HFF442E3F,&HFF968194,&HFF736270,&HFF6A5965,&HFF96808D,&HFFAF94A2,_
&HFFAC929E,&HFF957E87,&HFF817175,&HFF000000,&HFF332A22,&HFF31281F,&HFF2D2722,&HFF2F2725,_
&HFF211A18,&HFF261D1E,&HFF1F161A,&HFF231A1D,&HFF221A1A,&HFF231B1A,&HFF221C16,&HFF1F1612,_
&HFF3A2B29,&HFF3B2B2A,&HFF3C2C2C,&HFF665453,&HFF897576,&HFF8F7B7D,&HFF9A8688,&HFFAD969C,_
&HFFA69098,&HFFA99297,&HFFB59B9D,&HFFB49FA1,&HFFB3A2A6,&HFFA4999F,&HFF9F989D,&HFFA8A4A9,_
&HFFC6BFC8,&HFFC7C3CB,&HFFC6BFC8,&HFFC6B9C6,&HFFC8B3C4,&HFFD7C1D3,&HFFC2AABC,&HFFD7C3D1,_
&HFFE0CBD9,&HFFD3BCCF,&HFFD5C0D4,&HFFCCB9CE,&HFFC4AFC7,&HFFB6AABD,&HFFA1A0B1,&HFFA9A6AF,_
&HFFADA8A7,&HFF756D64,&HFF62574B,&HFF504138,&HFF5B4A47,&HFF76636C,&HFF604A60,&HFF9C8AA1,_
&HFF6E6375,&HFF867888,&HFFB19EB1,&HFFB39DAD,&HFFA7929D,&HFF907C86,&HFF7F7277,&HFF000000,_
&HFF2C2720,&HFF2C2621,&HFF302A28,&HFF27211F,&HFF1D1717,&HFF1F1A1D,&HFF1D181B,&HFF1D1619,_
&HFF1C1516,&HFF181312,&HFF181310,&HFF231B19,&HFF321E20,&HFF3B2629,&HFF3F2D2F,&HFF5F4A4E,_
&HFF836A71,&HFF8B747B,&HFF9A838B,&HFFAA8F9B,&HFFB196A2,&HFFAB919C,&HFFB69FA4,&HFFB39FA4,_
&HFFAFA1A4,&HFFA89FA3,&HFFB3AFB1,&HFFB5B3B8,&HFFBDBBC2,&HFFBEBBC3,&HFFBBB5BE,&HFFB9B0C0,_
&HFFCEBCD1,&HFFECDBEF,&HFFF2E3F7,&HFFFBF1FF,&HFFF7EDFE,&HFFE2D3EF,&HFFF6EDFA,&HFFF2EAF9,_
&HFFC6BBD7,&HFFB9B2CC,&HFF7D7C91,&HFFCCC9D6,&HFF878085,&HFF665C58,&HFF70605A,&HFF77635F,_
&HFF6B5458,&HFF584258,&HFF6A5583,&HFFB3A3C3,&HFF7F778C,&HFF968EA0,&HFFC0B4C6,&HFFB5A6B7,_
&HFFA795A3,&HFF8F7E89,&HFF7D747A,&HFF000000,&HFF2F2A26,&HFF332F2C,&HFF272423,&HFF0B0A0A,_
&HFF0A0609,&HFF151216,&HFF1A161C,&HFF141114,&HFF0C080B,&HFF080606,&HFF0F100D,&HFF20191A,_
&HFF261017,&HFF301A25,&HFF39242D,&HFF533D46,&HFF796470,&HFF9A818E,&HFFA68E99,&HFFB096A4,_
&HFFB59BA9,&HFFAE96A2,&HFFB29CA5,&HFFAD9EA4,&HFFA1959A,&HFF857B7E,&HFF938C8F,&HFFA29EA1,_
&HFF9D9AA0,&HFF949099,&HFF8F8995,&HFF948B9B,&HFF9B8DA2,&HFFBBAFC2,&HFFD6CAE3,&HFFD7CEE7,_
&HFFE3DDF8,&HFFD7D3EC,&HFFDAD3EA,&HFFDFD9F1,&HFFECE1FD,&HFF635C6F,&HFF3D3C4B,&HFFF5F5FC,_
&HFFB0A5AE,&HFF766867,&HFF75615D,&HFF65504E,&HFF6F5865,&HFF663E3B,&HFF7C3B06,&HFF9F8187,_
&HFF9397AD,&HFFAAA8B8,&HFFC6BECF,&HFFC8BCCD,&HFFBBAEBE,&HFF9F919F,&HFF857C86,&HFF000000,_
&HFF3E3839,&HFF2E292B,&HFF0A0A09,&HFF000000,&HFF0C0B0D,&HFF101016,&HFF0F1014,&HFF110F15,_
&HFF0A090F,&HFF0D0D0D,&HFF111313,&HFF1E1B1D,&HFF2A1D27,&HFF36262F,&HFF3C2E38,&HFF503F49,_
&HFF6E5A67,&HFF8E7C88,&HFFAA95A5,&HFFB5A1B0,&HFFAF9AAB,&HFFAB98A6,&HFFAD9CA9,&HFFA898A4,_
&HFF70676D,&HFF4B4347,&HFF6F696C,&HFF918C90,&HFF8C868D,&HFF7F757F,&HFF918792,&HFFB4A7B7,_
&HFF908396,&HFFA69CB0,&HFFD7D0E5,&HFFD6CEEB,&HFFE2E0F6,&HFFE0DCF3,&HFFDBD4EF,&HFFDED6EC,_
&HFFFFFFFF,&HFFBAB3C5,&HFF8C89A3,&HFFEBE4F6,&HFFE2D7DE,&HFF9F9290,&HFF96847E,&HFF755F5B,_
&HFF7A6B7B,&HFF7E4921,&HFF7F3700,&HFF83461F,&HFF9CA4BD,&HFFB5BBCB,&HFFCCC9DA,&HFFE2D8E9,_
&HFFCFC3D4,&HFFB5ABBA,&HFF98939F,&HFF000000,&HFF352B32,&HFF1A161C,&HFF090B09,&HFF111214,_
&HFF222225,&HFF15141A,&HFF050509,&HFF040409,&HFF09090D,&HFF121214,&HFF0A0C0C,&HFF141416,_
&HFF2C272F,&HFF3C363E,&HFF484149,&HFF554E58,&HFF5F5763,&HFF7B737E,&HFFA297A5,&HFFB3A8B6,_
&HFFACA0AE,&HFFAFA2B5,&HFFC7B6CA,&HFFC2B4C4,&HFF59505A,&HFF31282C,&HFF666161,&HFF938C8D,_
&HFF85797E,&HFF8F8388,&HFF9E8E97,&HFFAD9CAC,&HFF9A8B9E,&HFFA198AC,&HFFD1CBE0,&HFFDCD7EE,_
&HFFE2DEF6,&HFFE6DDF5,&HFFDAD1E7,&HFFCCBFD4,&HFFDCCEDB,&HFFEBE0F1,&HFFD0CDE5,&HFFEBE7F8,_
&HFFD4CDD1,&HFFA19891,&HFF897B70,&HFF9D8D85,&HFFA09599,&HFF704832,&HFF813C00,&HFF7B3600,_
&HFF7F4B34,&HFFBED0E4,&HFFD0D0E2,&HFFE6DFF1,&HFFCEC5D5,&HFFBCB5C5,&HFF9C99A8,&HFF000000,_
&HFF39313B,&HFF19151B,&HFF0B0D0D,&HFF1F1F21,&HFF343638,&HFF2D2F35,&HFF252732,&HFF20232B,_
&HFF222229,&HFF262729,&HFF1A1B1C,&HFF181A1B,&HFF242831,&HFF41454E,&HFF54565F,&HFF60656D,_
&HFF676871,&HFF80808A,&HFF9C9BA7,&HFFAEACB9,&HFFB0AEBC,&HFFC0B9CB,&HFFDFD2E6,&HFFDACFDE,_
&HFF594E5A,&HFF261F23,&HFF4D4747,&HFF91898B,&HFF81747A,&HFF695962,&HFF584550,&HFF715E6E,_
&HFF827587,&HFF9A8CA0,&HFFCFC6DD,&HFFDCD3EC,&HFFDCD5EC,&HFFE3DBF2,&HFFD8CFE1,&HFFCCBFCC,_
&HFFC5B1BD,&HFFC5B9C9,&HFFCAC9DE,&HFFE5E7F3,&HFFCDCCCD,&HFF9A958E,&HFF817A6E,&HFF80776B,_
&HFF90877F,&HFF808096,&HFF7F2C00,&HFF804100,&HFF7B3300,&HFF8C5A4D,&HFFDEEBFF,&HFFDAD6E5,_
&HFFD3CADD,&HFFCEC7D8,&HFFA09BAE,&HFF000000,&HFF33424C,&HFF222A30,&HFF161313,&HFF242125,_
&HFF32343E,&HFF474F5D,&HFF4C5868,&HFF3D4857,&HFF2C3442,&HFF40434E,&HFF2E2E33,&HFF14151D,_
&HFF222B3B,&HFF404959,&HFF737D8D,&HFF687281,&HFF778292,&HFF8D98A8,&HFFA2A8BA,&HFFC1C3D6,_
&HFFC1C2DA,&HFFCFCDE2,&HFFD8DAE3,&HFFD5D3DD,&HFF67666E,&HFF0F0B11,&HFF322D33,&HFF9D959D,_
&HFF57505A,&HFF88818E,&HFF878492,&HFF6F6876,&HFF83757E,&HFF918391,&HFFB6ABBD,&HFFD5CCE1,_
&HFFCFC7DF,&HFFD2CBE4,&HFFD9D0E8,&HFFD3CBE1,&HFFC8BDD0,&HFFB6AFC2,&HFFB4B0C4,&HFFD9D5E5,_
&HFFF0E6F2,&HFFBBAFB8,&HFF84747A,&HFF7C6B6E,&HFF897A7F,&HFF948E9A,&HFF77431B,&HFF803C00,_
&HFF804000,&HFF752C00,&HFFA68374,&HFFE4E4F4,&HFFD5CDD6,&HFFC4BCCB,&HFF706D7C,&HFF000000,_
&HFF30454F,&HFF36414B,&HFF464148,&HFF373841,&HFF1F2533,&HFF0A1523,&HFF293545,&HFF414A5B,_
&HFF3A4053,&HFF2B2E3A,&HFF2F2E35,&HFF232431,&HFF2A3045,&HFF2E374B,&HFF8190A2,&HFF7C8C9E,_
&HFF92A2B6,&HFFB4C2D6,&HFFC2CADF,&HFFCED6ED,&HFFD2D4EE,&HFFD4D6EA,&HFFCFD5DE,&HFFD6DAE2,_
&HFF8E8F94,&HFF000001,&HFF3B373E,&HFFB7B1BB,&HFF4A4653,&HFF555360,&HFF6B6C7D,&HFF837F8E,_
&HFF847782,&HFF988B98,&HFFB0A2B5,&HFFC9BDD2,&HFFDBCFE7,&HFFDBD0E9,&HFFD4C9E2,&HFFD6CCE4,_
&HFFD1C8DA,&HFFC2B8CC,&HFFBDB2C8,&HFFC0B3C7,&HFFE0D3E3,&HFFDFD4DE,&HFFA298A2,&HFF8D858C,_
&HFF958E94,&HFF88888F,&HFF786E6C,&HFF803B00,&HFF803F00,&HFF7E3D00,&HFF773004,&HFFC3B9BE,_
&HFFC5C5CD,&HFF7F7D88,&HFF5C5C69,&HFF000000,&HFF04131F,&HFF21323E,&HFF141C2A,&HFF192130,_
&HFF212B39,&HFF2B3340,&HFF545A68,&HFF5D6271,&HFF484D5A,&HFF2B2F3B,&HFF363944,&HFF494D5E,_
&HFF4A556C,&HFF4C596D,&HFF8A9AAD,&HFFA9B9CE,&HFFB9CADE,&HFFD6E6FC,&HFFD3DFF6,&HFFC7CFE7,_
&HFFD4D9F2,&HFFD3D7EB,&HFFD9DDE8,&HFFDCDFE9,&HFF9A99A2,&HFF0D0C13,&HFF595862,&HFFCAC8D0,_
&HFF413D49,&HFF181825,&HFF1F2133,&HFF9F9FAE,&HFF9B909E,&HFFA59AAA,&HFFB4A8BC,&HFFB6A9BF,_
&HFFC9BDD6,&HFFD5C6E0,&HFFD1C1D9,&HFFD2C3D7,&HFFD7C9DB,&HFFD7C8DC,&HFFD2BED4,&HFFBAA7BB,_
&HFFC4B8C8,&HFFE5E3EA,&HFFC9CBCF,&HFFB6BCC0,&HFFB0BBBD,&HFF7B8789,&HFF6C7E86,&HFF7B4936,_
&HFF7B3200,&HFF814200,&HFF712600,&HFFA79B91,&HFF9DA0AC,&HFF54545E,&HFF9396A2,&HFF000000,_
&HFF808E9A,&HFF263C4E,&HFF2B4159,&HFF2F4258,&HFF1B2638,&HFF212837,&HFF1A202B,&HFF11141E,_
&HFF373B45,&HFF303741,&HFF37414D,&HFF647183,&HFF4F5C75,&HFF90A1B8,&HFFCDDDF5,&HFFC4D6EF,_
&HFFBACCE2,&HFFBBCFE6,&HFFCFDFF8,&HFFCBD8EF,&HFFD0D8F3,&HFFD4DBF0,&HFFE1E7F4,&HFFCFD4DF,_
&HFF7C7D86,&HFF22222A,&HFF585860,&HFFC2C3CC,&HFF565863,&HFF272833,&HFF232A38,&HFFB8BACD,_
&HFFABA7B8,&HFFAAA5B9,&HFFBCB4C8,&HFFB5ABC0,&HFFB6A8BF,&HFFCBBACF,&HFFD5C3D8,&HFFD4C2D5,_
&HFFE0CEDD,&HFFE9D4E8,&HFFEED0EA,&HFFE0CADE,&HFFC8C1D0,&HFFD6D8E1,&HFFD6E4E5,&HFFCCDFDE,_
&HFFC7D8DA,&HFF98A8AD,&HFF909EAA,&HFFC8D7E8,&HFF8A534C,&HFF723300,&HFF783000,&HFFB7827A,_
&HFF94A2AE,&HFF848187,&HFFAFAEB4,&HFF000000,&HFFFFFFFF,&HFF596C80,&HFF0A2645,&HFF48617B,_
&HFF2E4156,&HFF273342,&HFF2D323C,&HFF1D202C,&HFF38404B,&HFF37424E,&HFF414E5D,&HFF3E4C62,_
&HFF687893,&HFFCADDF5,&HFFC8DDF5,&HFFC3D8F2,&HFFC3D9F1,&HFFBBCFE7,&HFFCADBF4,&HFFC4D4EE,_
&HFFCEDCF5,&HFFE8F1FF,&HFFD5DCE9,&HFFC0C6D1,&HFF7F808D,&HFF2C2D36,&HFF555761,&HFFC8CAD5,_
&HFF6B717E,&HFF0F131E,&HFF626B7B,&HFFCDD5E8,&HFFC0C1D4,&HFFBEBCD2,&HFFBDB4CE,&HFFBCB1C8,_
&HFFB9ABC1,&HFFC3B2C7,&HFFD1BDCF,&HFFDBC2D6,&HFFDEC9D8,&HFFDEC8DA,&HFFEACFE6,&HFFEEDDF2,_
&HFFDFDAE6,&HFFCED4DB,&HFFC4D2D4,&HFFC7D5D9,&HFFCEDAE3,&HFFD3DAE4,&HFFEBE9FB,&HFFE1E0F4,_
&HFFEFFCFF,&HFF762E02,&HFFF30000,&HFFFF0000,&HFF85C7CE,&HFFA19396,&HFFA0979A,&HFF000000,_
&HFFFFFFFF,&HFF738B9D,&HFF000E2F,&HFF1A3853,&HFF0C1D34,&HFF1D3041,&HFF25313E,&HFF353D4C,_
&HFF242F3F,&HFF364454,&HFF506171,&HFF47586F,&HFF7E8EAD,&HFFADC2DE,&HFFBED2EE,&HFFD6EDFE,_
&HFFCDE4FC,&HFFCCE1FA,&HFFCEDFF5,&HFFC3D4EC,&HFFC8D6EE,&HFFE4EFFE,&HFFD8E1F0,&HFFC5CBD7,_
&HFF858B96,&HFF292D37,&HFF585C68,&HFFC6CDD7,&HFFA2ABB9,&HFF162233,&HFFBBCBD6,&HFFE6F3FF,_
&HFFCDD2E6,&HFFE0E1F7,&HFFCFCBE1,&HFFC9BDD2,&HFFC5B7CC,&HFFC8B7C9,&HFFCDBACD,&HFFD1BED0,_
&HFFD5C1D5,&HFFD4C2D5,&HFFD8C7DC,&HFFE5DCEB,&HFFE5E4EF,&HFFD5DDE5,&HFFCED7DD,&HFFCBCED8,_
&HFFCCCBDB,&HFFE0D7EC,&HFFE8D4F1,&HFFE5D1E9,&HFFEBE4F0,&HFFE4CDC6,&HFFFF0306,&HFFFF0000,_
&HFF91C4CE,&HFFC4B2B7,&HFFD5C5CA,&HFF000000,&HFFF8FDFF,&HFFA3B4C4,&HFF466681,&HFF314C69,_
&HFF19334B,&HFF122C44,&HFF0E243B,&HFF102439,&HFF0D2031,&HFF233649,&HFF3D5264,&HFF374960,_
&HFF41506F,&HFF8092AF,&HFFC9DCF7,&HFFDEF3FD,&HFFE0F5FE,&HFFD7ECFF,&HFFD7E9FD,&HFFD8E8FC,_
&HFFCFDDF1,&HFFD8E1F4,&HFFE3ECFB,&HFFE0E6F7,&HFFB5BCCB,&HFF282E3A,&HFF434B57,&HFF9AA4B1,_
&HFFDAE6F0,&HFF4F616F,&HFF718495,&HFFEFFEFF,&HFFE4F1FF,&HFFDCE2F6,&HFFDCDCEC,&HFFDCD3E4,_
&HFFD5C7D8,&HFFD0C3D3,&HFFCFC1D1,&HFFD0C0D3,&HFFD5C8DB,&HFFD6CDDF,&HFFD7D5E2,&HFFDBD9E6,_
&HFFDDDDE6,&HFFDDDDE6,&HFFDBDAE8,&HFFD7D3E2,&HFFD9CFE4,&HFFDFCFEB,&HFFE5D0F3,&HFFEADBF7,_
&HFFE0E0EC,&HFFDEEAFC,&HFFCEE4F5,&HFFB0D7E7,&HFFC0BCCC,&HFFB0AEBC,&HFF7A737B,&HFF000000,_
&HFFFCFCFD,&HFFFDFFFF,&HFFC1D7E9,&HFF314B66,&HFF6A89A3,&HFF557594,&HFF173656,&HFF001D3A,_
&HFF041D38,&HFF142C41,&HFF142739,&HFF2E3E52,&HFF2B3A57,&HFF6D7D99,&HFFA9BAD4,&HFF9CB2C9,_
&HFFC6DCED,&HFFD7E9FD,&HFFD6E8FB,&HFFD7E5F8,&HFFD4E1F2,&HFFDDE8F8,&HFFE1ECFC,&HFFE9F2FF,_
&HFFEBF2FD,&HFF525A66,&HFF515B66,&HFF74808D,&HFFA1B0BF,&HFFC6DAE4,&HFF7D95A7,&HFFD6E9F9,_
&HFFE9F7FF,&HFFDDE5F6,&HFFDFE2F0,&HFFE4DEEE,&HFFE0D4E4,&HFFD6C8DB,&HFFD0C5D6,&HFFCEC5D9,_
&HFFD1CCE2,&HFFD8D7E7,&HFFDADDE8,&HFFDEDFE9,&HFFE1E0EA,&HFFE0DCEA,&HFFDCDAE6,&HFFD4D1E3,_
&HFFD5D1E8,&HFFDDDDF7,&HFFDEDEFB,&HFFD4DEFA,&HFFD0E9F8,&HFFA1BCD0,&HFF7591A9,&HFF5B7991,_
&HFF243952,&HFF000E29,&HFF000B1C,&HFF000000,&HFFFDF9F7,&HFFFFFFFE,&HFFFDFFFF,&HFF344D67,_
&HFF113552,&HFF5984A8,&HFF74A1CA,&HFF5A87AB,&HFF395B7B,&HFF1F384F,&HFF1C2E3C,&HFF162131,_
&HFF384661,&HFF71829B,&HFF8194AC,&HFF9FB4C8,&HFFB9D0E1,&HFFD2E5F7,&HFFD6E6F6,&HFFD2DEEC,_
&HFFD5DDEC,&HFFD5DFF0,&HFFE4F0FD,&HFFEDF5FF,&HFFF3FAFF,&HFFCDD6E4,&HFF8692A0,&HFF6C7988,_
&HFF7E92A2,&HFFA3BBCB,&HFFBBD5EB,&HFFD0EAF9,&HFFE0F3FD,&HFFE7F5FE,&HFFEAEEF8,&HFFEAE8F4,_
&HFFE7E0EC,&HFFDAD0DE,&HFFD5CBDE,&HFFD2CCE4,&HFFCFD0EA,&HFFDADCF1,&HFFDBE1EA,&HFFE0E2EA,_
&HFFE3DEE7,&HFFDED8E5,&HFFD8D6E3,&HFFD5D6E8,&HFFCEDAED,&HFFC7E0F4,&HFFADD2E7,&HFF8BBFD3,_
&HFF68AAC4,&HFF40829F,&HFF1F6281,&HFF195C82,&HFF316F95,&HFF3C769D,&HFF437BA3,&HFF000000,_
&HFFFDF8FA,&HFFF7F6F9,&HFFF9FFFF,&HFFF5FFFF,&HFF84A4BD,&HFF285579,&HFF144970,&HFF4A7CA3,_
&HFF7BA6C8,&HFF34556D,&HFF071D30,&HFF2B3C50,&HFF404966,&HFF313D57,&HFF606C87,&HFFB6C5D7,_
&HFFDBEAF7,&HFFD3E3F0,&HFFD1E0EC,&HFFCED8E3,&HFFC1C8D4,&HFFACB5C0,&HFFA5AEC0,&HFFB5BFCF,_
&HFFBEC7D4,&HFFD9E3EE,&HFFD1DAE8,&HFFA6B1BF,&HFF9DAFBD,&HFFA3B8CA,&HFFC5DDEE,&HFFD9F0FF,_
&HFFE1F0FC,&HFFE5F1F9,&HFFEDF0F9,&HFFE8E7F0,&HFFE2DBE6,&HFFDDD7E3,&HFFDAD3E5,&HFFDBDAEC,_
&HFFDCDCF4,&HFFE3E7F9,&HFFDEE1EA,&HFFD1D5DE,&HFFD4D4E0,&HFFE2E0EC,&HFFE6E4F0,&HFFCFDCE8,_
&HFFC1E1EA,&HFFA4D9E7,&HFF93D4E1,&HFF89D3E6,&HFF88DAF9,&HFF87DBFD,&HFF8CE2FF,&HFF9DF6FF,_
&HFF97F0FF,&HFF8BDFFF,&HFF67B7E9,&HFF000000,&HFFFDFEFF,&HFFFFFCFD,&HFFFCFBFB,&HFFFFFFFF,_
&HFFF7FFFF,&HFFA4C5D3,&HFF28576B,&HFF1B5069,&HFF477C98,&HFF71A1C3,&HFF447199,&HFF203D64,_
&HFF2B3257,&HFF343858,&HFF2E314B,&HFF262638,&HFF53525E,&HFF6E6E76,&HFF9A9FA2,&HFF9CA2A3,_
&HFF878F91,&HFF747A7E,&HFF585A5E,&HFF56575D,&HFF5C5C60,&HFF686C6D,&HFF9AA09F,&HFFD7DEE0,_
&HFFE8EDF4,&HFFE8EFF4,&HFFECF3FB,&HFFE7EFF6,&HFFE8EFF1,&HFFE8EBEF,&HFFEDEFF4,&HFFE8E7EF,_
&HFFDDDDE6,&HFFE7E3EB,&HFFE6E0E8,&HFFE7E3E7,&HFFE8E2E8,&HFFE3D8E1,&HFFE1D3DE,&HFFCDDDE6,_
&HFFB8D6E9,&HFFACBDD1,&HFFADB3C4,&HFF8C9CBB,&HFF4F7B8E,&HFF366E81,&HFF5A819B,&HFF667F9C,_
&HFF607F9F,&HFF547BA0,&HFF4F799A,&HFF4F7C9A,&HFF376D92,&HFF316D98,&HFF3B81AE,&HFF000000,_
&HFFFDFCFF,&HFFFCFBFE,&HFFFFFEFC,&HFFF8FCFD,&HFFF6FFFF,&HFFF6FFFF,&HFFD9EFF1,&HFF85ACBD,_
&HFF416D87,&HFF457493,&HFF49789D,&HFF355981,&HFF3A4F70,&HFF445572,&HFF223048,&HFF080F22,_
&HFF020615,&HFF060711,&HFF16171F,&HFF1B1E24,&HFF2E3137,&HFF36393E,&HFF353539,&HFF444445,_
&HFF414342,&HFF4C4A48,&HFF3A3D37,&HFF414441,&HFF858686,&HFFA4A3A6,&HFFAFB0B4,&HFFD6D1D4,_
&HFFEBE1DF,&HFFF1E8E9,&HFFDDD5DA,&HFFD2CAD1,&HFFE8E0EC,&HFFE0DCE9,&HFFCFCDDB,&HFFD7D4E0,_
&HFFDEDDE7,&HFFCEC4CB,&HFFCFC1C6,&HFFEDFBFF,&HFFB3D8E7,&HFF4B6F8C,&HFF000527,&HFF3C5476,_
&HFF76A3BF,&HFF86BCD4,&HFF7897BB,&HFF425C7D,&HFF05243F,&HFF000016,&HFF000015,&HFF000727,_
&HFF00193E,&HFF002044,&HFF002048,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,_
&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000,&HFF000000
Declare Function sound Alias"Beep"(Byval f As Integer,Byval d As Integer) As Integer

sub GetTime(xpos as integer=400)
    #define map(a,b,x,c,d) ((d)-(c))*((x)-(a))/((b)-(a))+(c)
    #macro mod12(n,m)
    m= n Mod 12
    If m=0 Then m=12 
    #endmacro
    #macro lineto(x1,y1,x2,y2,d,col)
 line(x1,y1)-(x1+(x2-x1)*d,y1+(y2-y1)*d ),col
 #endmacro
 #macro drawline(x,y,ang,length,col,x2,y2,flag)
     ang2=ang:ang2=ang2*.0174532925199433
    x2=(x)+length*Cos(ang2)
    y2=(y)-length*Sin(ang2)
    If flag Then Line(x,y)-(x2,y2),col
    #endmacro
    dim as integer xres=xpos*2,yres=350
    static as integer newsm
    dim as integer m2
    Dim As Single b1,b2,tmp1,tmp2,ang2
    dim as string t=Time
    dim as integer hm=Valint(Left(t,2)),mm=Valint(Mid(t,4,2)),sm=Valint(Right(t,2))
    If sm<>newsm Then sound(200,5):newsm=sm
    mod12(hm,m2)
    dim as single h=map(0,12,m2,360,0)
    dim as single m=map(0,60,mm,360,0)
    dim as single s=map(0,60,sm,360,0)
    For z As Integer=0 To 360 Step 6
        drawline((xres/2),(.3*yres),z,100,15,b1,b2,0)
        'spots
        If z Mod 30=0 Then 
          lineto(b1,b2,(xres/2),(.3*yres),.1,rgb(200,0,0)) '4  
        Circle(b1,b2),4,rgb(100,100,255),,,,f '9
    else
        lineto(b1,b2,xres/2,.3*yres,.05,rgb(0,0,200))'1
         circle(b1,b2),1,rgb(0,0,100),,,,f '1
        end if
        drawline(xres/2,.3*yres,z,85,rgb(0,0,0),b1,b2,0)'15=========================
        dim as single n=map(360,0,(z-90),0,12)
        'numbers
        If z Mod 30=0 Then 
            mod12(n,m2)
        Draw String(b1-3,b2-4),str(m2),rgb(0,200,0) '2
        end if
    Next z
    drawline(xres/2,.3*yres,(h+90)-5*(360-m)/60,60,rgb(100,0,100),tmp1,tmp2,1)'hour 5
    drawline(xres/2,.3*yres,(m+90)-(360-s)/60,85,rgb(100,0,100),tmp1,tmp2,1)  'minute 5
    drawline(xres/2,.3*yres,(s+90),95,rgb(100,100,100),tmp1,tmp2,1)             'second 8
    Circle(xres/2,.3*yres),3,rgb(100,100,100),,,,f                  'centre 8
end sub
Function Filter(Byref tim As any Pointer,_
    byval rad As Single,_
    byval destroy As Integer=1,_
    byval fade As Integer=0) As any Pointer
    #define map(a,b,_x_,c,d) ((d)-(c))*((_x_)-(a))/((b)-(a))+(c)
    If fade<0 Then fade=0:If fade>100 Then fade=100
    Type p2
        As Integer x,y
        As Uinteger col
    End Type
    #macro ppoint(_x,_y,colour)
    pixel=row+pitch*(_y)+4*(_x)
    (colour)=*pixel
    #endmacro
    #macro ppset(_x,_y,colour)
    pixel=row+pitch*(_y)+4*(_x)
    *pixel=(colour)
    #endmacro
    #macro average()
    ar=0:ag=0:ab=0:inc=0
    xmin=x:If xmin>rad Then xmin=rad
    xmax=rad:If x>=(_x-1-rad) Then xmax=_x-1-x
    ymin=y:If ymin>rad Then ymin=rad
    ymax=rad:If y>=(_y-1-rad) Then ymax=_y-1-y
    For y1 As Integer=-ymin To ymax
        For x1 As Integer=-xmin To xmax
            inc=inc+1 
            ar=ar+(NewPoints(x+x1,y+y1).col Shr 16 And 255)
            ag=ag+(NewPoints(x+x1,y+y1).col Shr 8 And 255)
            ab=ab+(NewPoints(x+x1,y+y1).col And 255)
        Next x1
    Next y1
    If fade=0 Then
        averagecolour=Rgb(ar/(inc),ag/(inc),ab/(inc))
    Else
        averagecolour=Rgb(fd*ar/(inc),fd*ag/(inc),fd*ab/(inc))
    End If
    #endmacro
    Dim As Single fd=map(0,100,fade,1,0)
    Dim As Integer _x,_y
    Imageinfo tim,_x,_y
    Dim  As Uinteger Pointer im=Imagecreate(_x,_y)
    Dim As Integer pitch
    Dim  As Any Pointer row
    Dim As Uinteger Pointer pixel
    Dim As Uinteger col
    Imageinfo tim,,,,pitch,row
    Dim As p2 NewPoints(_x-1,_y-1)
    For y As Integer=0 To (_y)-1
        For x As Integer=0 To (_x)-1
            ppoint(x,y,col)
            NewPoints(x,y)=Type<p2>(x,y,col)
        Next x
    Next y
    Dim As Uinteger averagecolour
    Dim As Integer ar,ag,ab
    Dim As Integer xmin,xmax,ymin,ymax,inc
    Imageinfo im,,,,pitch,row
    For y As Integer=0 To _y-1
        For x As Integer=0 To _x-1  
            average()
            ppset((NewPoints(x,y).x),(NewPoints(x,y).y),averagecolour) 
        Next x
    Next y
    If destroy Then Imagedestroy tim: tim = 0
    Function= im
End Function

dim as integer xres,yres
screen 20,32,,&h40
screeninfo xres,yres
dim as double magnification=7

Type bitmap_size
As Integer across,down
End Type

sub read_data(mybitmap as bitmap_size)
for x as integer=0 to mybitmap.across
for y as integer=0 to mybitmap.down
read a(x,y)
next y
next x
end sub
dim shared as any pointer image,back
image=imagecreate(magnification*ubound(a,1),magnification*ubound(a,2))
back=imagecreate(xres,yres)
Sub drawbitmap_to_image(mybitmap As bitmap_size,scale as single=1,mx As Integer=0,my As Integer=0)
#macro magnify(pivotx,pivoty,px,py,scale)
var rotx=scale*(px-pivotx)+pivotx
var roty=scale*(py-pivoty)+pivoty
#endmacro
For x As Integer=mx To mx+mybitmap.across
For y As Integer=my To my+mybitmap.down
magnify(mx,my,x,y,scale)
line image,(rotx-scale/2,roty-scale/2)-(rotx+scale/2,roty+scale/2),a(x-mx,y-my),BF
Next y
Next x
End Sub
Dim As bitmap_size bitmap_info
bitmap_info.across=ubound(a)
bitmap_info.down=ubound(a,2)
read_data(bitmap_info)
drawbitmap_to_image(bitmap_info,magnification)
image=filter(image,6)
#define r(f,l) Rnd * ((l) - (f)) + (f)
#define map(a,b,x,c,d) ((d)-(c))*((x)-(a))/((b)-(a))+(c)
#define onscreen(_x,_y) ((_x)>=0)*((_x)<xres)*((_y)>=0)*((_y)<yres)

Type v2
    As Single x,y
End Type
Const k=4   
Const g=9.81 
Const m=5   
Const d =.05  
Redim Shared As v2 position(),startpos()
redim shared as single t(),vel(),ang()
dim as single w
dim shared as single pi=4*atn(1)
dim as integer temp

sub star(starX as single,starY as single,size as single,col as uinteger,num as integer=5,rot as single=0)
    Var count=0,rad=0.0,_px=0.0,_py=0.0,pi=4*atn(1),prime=rgb(255,254,253)
    for x as integer=1 to 2
    For z As Single=0+.28 +rot To 2*pi+.1+.28 +rot Step 2*pi/(2*num)
        count=count+1
        If count Mod 2=0 Then rad=size Else rad=.4*size
        _px=starx+rad*Cos(z)
        _py=stary+rad*Sin(z)
        If count=1 Then Pset back,(_px,_py)Else Line back,-(_px,_py),prime
    Next z
    Paint back,(starx,stary),prime,prime
    count=0:prime=col
    next x
end sub
sub setup(num as integer)
    redim position(1 to num)
    redim startpos(1 to num)
    redim vel(1 to num)
    redim t(1 to num)
    redim ang(1 to num)
    for n as integer=1 to num
        startpos(n)=type<v2>(r(300,310),r(380,390))
        startpos(n).x=startpos(n).x+300
         startpos(n).y=startpos(n).y+180
        vel(n)=r(-220,-180)
        ang(n)=r(pi/2-.2,pi/2+.2)
        next n
    end sub
    sub source(n as integer)
        startpos(n)=type<v2>(r(300,310),r(380,390))
         startpos(n).x=startpos(n).x+300
          startpos(n).y=startpos(n).y+180
        vel(n)=r(-220,-180)
        ang(n)=r(pi/2-.2,pi/2+.2)
        t(n)=0
        end sub
  '============================================  
    setup(20000)
    for n as integer=1 to 25
    star(r(200,1000),r(100,600),r(5,20),rgb(200+r(0,50),200+r(0,50),200+r(0,50)),r(4,9))
    next n
dim as string i
Do
    temp=temp+5
        if temp>ubound(position)-5 then temp=ubound(position)
        
i=inkey
Screenlock
Cls
put(0,0),back,trans
put( 390, 190),image,pset
gettime(200)
for n as integer=1 to temp
    w=30+10*sin(position(n).y/10)
    t(n)=t(n)+.005
        position(n).x=startpos(n).x+(m/k)*(1-Exp(-(k/m)*t(n)))*(Vel(n)*Cos(ang(n))-w)+w*t(n)
        position(n).y=startpos(n).y+(m/k)*(1-Exp(-(k/m)*t(n)))*(Vel(n)*Sin(ang(n))+g*m/k)-(g*m/k)*t(n)
        if onscreen(position(n).x,position(n).y)=0 then source(n)
        var cc=map(390,0,position(n).y,100,50)
        circle(position(n).x,position(n).y),3,rgba(cc,cc,cc,20),,,.5,f
next n

Screenunlock
Sleep 1,1
Loop Until i=Chr(27)
imagedestroy image
imagedestroy back
 
 
dafhi
Posts: 1641
Joined: Jun 04, 2005 9:51

Re: Squares

Post by dafhi »

hahaha!! I got a new laptop. I've had to run fb in a virtual machine bcuz it will randomly freeze, stuck at max cpu on compile. In the VM I haven't had a problem.

New laptop has a few such "software" issues but I like it because it doesn't overheat. It's got a Core i5 4210U (ultra low voltage) processor, scores 3600 average on cpubenchmark .. mine scored 3700.

So yeah, freebasic is great but I got the wind knocked out of my sails with the compilation freezes (old laptop never had this issue).

The VM takes getting used to. Also, I'm able to play one of my old favorite games now, and I'm an addict
fxm
Moderator
Posts: 12106
Joined: Apr 22, 2009 12:46
Location: Paris suburbs, FRANCE

Re: Squares

Post by fxm »

dafhi wrote:I never had problems with 0.91, but always glad to be of assistance :D
Yet your program above does not compile under FBC 0.91 since build of 2013-11-10 and before the change last night:
parser: Don't abort when warning about mismatching parameter initializers
Last edited by fxm on Aug 03, 2014 6:01, edited 1 time in total.
dafhi
Posts: 1641
Joined: Jun 04, 2005 9:51

Re: Squares

Post by dafhi »

my bad. looks like i'm using 90.1
rolliebollocks
Posts: 2655
Joined: Aug 28, 2008 10:54
Location: new york

Re: Squares

Post by rolliebollocks »

@dahfi

are you using windows 8?

There have been some issues with it eating up 100% disk usage..
dafhi
Posts: 1641
Joined: Jun 04, 2005 9:51

Re: Squares

Post by dafhi »

Nope.
albert
Posts: 6000
Joined: Sep 28, 2006 2:41
Location: California, USA

Re: Squares

Post by albert »

@Dodicat

Yeah i take a smoke break every hour.

I'm working on a million digit divider to go with the mult_7, so far , i got it doing divide by 2

Code: Select all


Declare Function   plus( NUMber1 As String  ,  NUMber2 As String ) As String
DECLARE FUNCTION  minus(     NUM1 As String ,     NUM2 As String ) As String
DECLARE Function divide(n1 As String,n2 As String,decimal_places As integer,dpflag As String="s") As String

do
    '===========================================================================
    '===========================================================================
    dim as string num1 =""
    for a as ulongint = 1 to 10 step 1
        num1+=str(int(rnd*10))
    next
    if left(num1,1)="0" then mid(num1,1,1) = str(int(rnd*9)+1)
    
    dim as string num2 =""
    for a as ulongint = 1 to 1 step 1
        num2+=str(int(rnd*10))
    next
    if left(num2,1)="0" then mid(num2,1,1) = str(int(rnd*9)+1)
    
    num2="2"
    
    if num2 > num1 then swap num1 , num2
    if len(num2) > len(num1) then swap num1 , num2
    if len(num2) = len(num1) then if left(num2,1) > left(num1,1) then swap num1 , num2
    
    '===========================================================================
    '===========================================================================
        
    dim as string real_answer = divide(num1,num2,len(num1))
    if right(real_answer,2) <> ".5" then real_answer+= ".0"
    dim as double time1 = timer , time2
    '===========================================================================
    '===========================================================================
    dim as single val1 , val2
    dim as single value1 , value2
    dim as string my_answer
    dim as string overflow
    for a as longint = 0 to len(num2)-1 step 1
        val1 = num2[a]-48
        for b as longint = 0 to len(num1)-1 step 1
            val2 = num1[b]-48
            value1 = int(val2 / val1)
            value2 = frac(val2 / val1)
            value2 = value2*10
            'print value2 ; " " ;
            overflow+= str(value2)
            my_answer = plus(my_answer + "0", str(value1) )
        next
    next
    my_answer = plus(my_answer + "0" , overflow )
    my_answer = left(my_answer,len(my_answer)-1) + "." + right(my_answer,1)
    '===========================================================================
    '===========================================================================
    time2 = timer
    
    dim as string difference = minus(real_answer , my_answer)
    
    print
    print "Num1       = " ; num1
    print "Num2       = " ; num2
    print "Answer     = " ; real_answer
    print "My Answer  = " ; my_answer
    print "Difference = " ; difference
    print "TIME = " ; time2-time1
    
    if difference <> "0" then sleep
    'if inkey = " " then sleep
    sleep
    
loop until inkey=chr(27)
sleep
end
'===============================================================================
'===============================================================================
'Dodicats Plus & Minus &Divide functions
'===============================================================================
'===============================================================================
Function plus(_num1 As String,_num2 As String) As String
    Dim  ADDQmod(0 To 19) As Ubyte
    Dim  ADDbool(0 To 19) As Ubyte
    For z As Integer=0 To 19
        ADDQmod(z)=(z Mod 10+48)
        ADDbool(z)=(-(10<=z))
    Next z
    Var _flag=0,n_=0
    Dim As Ubyte addup=Any,addcarry=Any
    #macro finish()
    answer=Ltrim(answer,"0")
    If _flag=1 Then Swap _num2,_num1
    Return answer
    #endmacro
    If Len(_num2)>Len(_num1) Then 
        Swap _num2,_num1
        _flag=1
    End If
    Var diff=Len(_num1)-Len(_num2)
    Var answer="0"+_num1
    addcarry=0
    For n_=Len(_num1)-1 To diff Step -1 
        addup=_num2[n_-diff]+_num1[n_]-96
        answer[n_+1]=ADDQmod(addup+addcarry)
        addcarry=ADDbool(addup+addcarry)
    Next n_ 
    If addcarry=0 Then 
        finish()
    End If
    If n_=-1 Then 
        answer[0]=addcarry+48
        finish()
        Endif
        For n_=n_ To 0 Step -1 
            addup=_num1[n_]-48
            answer[n_+1]=ADDQmod(addup+addcarry)
            addcarry=ADDbool(addup+addcarry)
            If addcarry=0 Then Exit For
        Next n_
        answer[0]=addcarry+48
        finish()
    End Function
'===============================================================================
'===============================================================================
Function minus(num1 As String,num2 As String) As String
    Dim  subQmod(0 To 19) As Ubyte
    Dim   subbool(0 To 19) As Ubyte
    For z As Integer=0 To 19
        subqmod(z)=(z Mod 10+48)
        subbool(z)=(-(10>z))
    Next z
    Dim As Integer bigger,swapflag           
    Dim sign As String * 1
    Var lenf=Len(NUM1)
    Var lens=Len(NUM2)
    #macro finishup()
    answer=Ltrim(answer,"0")
    If answer="" Then Return "0"
    If swapflag=1 Then Swap NUM1,NUM2
    Return sign+answer
    #endmacro
    #macro compare()
    If Lens>lenf Then bigger= -1:Goto fin
    If Lens<lenf Then bigger =0:Goto fin
    If NUM2>NUM1 Then 
        bigger=-1
    Else
        bigger= 0
    End If
    fin:
    #endmacro
    
    compare()
    If bigger Then 
        sign="-"
        Swap NUM2,NUM1
        Swap lens,lenf
        swapflag=1
    End If
    Var diff=lenf-lens
    Dim As String answer=NUM1
    Dim As Integer n
    Dim As Ubyte takeaway,subtractcarry
    subtractcarry=0
    For n=lenf-1 To diff Step -1 
        takeaway= num1[n]-num2[n-diff]+10-subtractcarry
        answer[n]=Subqmod(takeaway)
        subtractcarry=Subbool(takeaway)
    Next n 
    
    If subtractcarry=0 Then:finishup():End If
    If n=-1 Then:finishup():End If
    For n=n To 0 Step -1 
        takeaway= num1[n]-38-subtractcarry 
        answer[n]=Subqmod(takeaway)
        subtractcarry=Subbool(takeaway)
        If subtractcarry=0 Then exit for
    Next n
    finishup()
End Function          
'===============================================================================
'===============================================================================
Function divide(n1 As String,n2 As String,decimal_places As integer,dpflag As String="s") As String
          Dim As String number=n1,divisor=n2
          dpflag=lcase(dpflag)
          'For MOD
          dim as integer modstop
          if dpflag="mod" then 
              if len(n1)<len(n2) then return n1
              if len(n1)=len(n2) then
                  if n1<n2 then return n1
                  end if
              modstop=len(n1)-len(n2)+1
              end if
          if dpflag<>"mod" then
     If dpflag<>"s"  Then dpflag="raw" 
     end if
        Dim runcount As integer
        '_______  LOOK UP TABLES ______________
        Dim Qmod(0 To 19) As Ubyte
        Dim bool(0 To 19) As Ubyte
        For z As Integer=0 To 19
    Qmod(z)=(z Mod 10+48)
    bool(z)=(-(10>z))
Next z
Dim answer As String   'THE ANSWER STRING  

'_______ SET THE DECIMAL WHERE IT SHOULD BE AT _______
Dim As String part1,part2
#macro set(decimal)
#macro insert(s,char,position)
If position > 0 And position <=Len(s) Then
part1=Mid$(s,1,position-1)
part2=Mid$(s,position)
s=part1+char+part2
End if
#endmacro
insert(answer,".",decpos)
  answer=thepoint+zeros+answer
If dpflag="raw" Then
    answer=Mid(answer,1,decimal_places)
    End if
#endmacro
'______________________________________________
'__________ SPLIT A STRING ABOUT A CHARACTRR __________
Dim As String var1,var2
    Dim pst As integer
      #macro split(stri,char,var1,var2)
    pst=Instr(stri,char)
    var1="":var2=""
    If pst<>0 Then
    var1=Rtrim(Mid(stri,1,pst),".")
    var2=Ltrim(Mid(stri,pst),".")
Else
    var1=stri
    End if
    #endmacro
    
       #macro Removepoint(s)
       split(s,".",var1,var2)
#endmacro
'__________ GET THE SIGN AND CLEAR THE -ve __________________
Dim sign As String
          If Left(number,1)="-" Xor Left (divisor,1)="-" Then sign="-"
            If Left(number,1)="-" Then  number=Ltrim(number,"-")
            If Left (divisor,1)="-" Then divisor=Ltrim(divisor,"-")
              
'DETERMINE THE DECIMAL POSITION BEFORE THE DIVISION
Dim As integer lennint,lenddec,lend,lenn,difflen
split(number,".",var1,var2)
lennint=Len(var1)
split(divisor,".",var1,var2)
lenddec=Len(var2)

If Instr(number,".") Then 
    Removepoint(number)
    number=var1+var2
    End if
If Instr(divisor,".") Then 
    Removepoint(divisor)
    divisor=var1+var2
    End if
Dim As integer numzeros
numzeros=Len(number)
number=Ltrim(number,"0"):divisor=Ltrim (divisor,"0")
numzeros=numzeros-Len(number)
lend=Len(divisor):lenn=Len(number)
If lend>lenn Then difflen=lend-lenn
Dim decpos As integer=lenddec+lennint-lend+2-numzeros 'THE POSITION INDICATOR
Dim _sgn As Byte=-Sgn(decpos)
If _sgn=0 Then _sgn=1
Dim As String thepoint=String(_sgn,".") 'DECIMAL AT START (IF)
Dim As String zeros=String(-decpos+1,"0")'ZEROS AT START (IF) e.g. .0009
if dpflag<>"mod" then
If Len(zeros) =0 Then dpflag="s"
end if
Dim As integer runlength
If Len(zeros) Then 
     runlength=decimal_places
     answer=String(Len(zeros)+runlength+10,"0")
    If dpflag="raw" Then 
        runlength=1
        answer=String(Len(zeros)+runlength+10,"0")
        If decimal_places>Len(zeros) Then
            runlength=runlength+(decimal_places-Len(zeros))
            answer=String(Len(zeros)+runlength+10,"0")
            End If
            End If

Else
decimal_places=decimal_places+decpos
runlength=decimal_places
answer=String(Len(zeros)+runlength+10,"0")
End if
'___________DECIMAL POSITION DETERMINED  _____________

'SET UP THE VARIABLES AND START UP CONDITIONS
number=number+String(difflen+decimal_places,"0")
        Dim count As integer
        Dim temp As String
        Dim copytemp As String
        Dim topstring As String
        Dim copytopstring As String
        Dim As integer lenf,lens
        Dim As Ubyte takeaway,subtractcarry
        Dim As integer n3,diff
       If Ltrim(divisor,"0")="" Then Return "Error :division by zero"   
        lens=Len(divisor)
         topstring=Left(number,lend)
         copytopstring=topstring
        Do
            count=0
        Do
            count=count+1
            copytemp=temp
    
            Do
'___________________ QUICK SUBTRACTION loop _________________              
            
lenf=Len(topstring)
If  lens<lenf=0 Then 'not
If Lens>lenf Then
temp= "done"
Exit Do
End if
If divisor>topstring Then 
temp= "done"
Exit Do
End if
End if

  diff=lenf-lens
        temp=topstring
        subtractcarry=0
        
        For n3=lenf-1 To diff Step -1
            takeaway= topstring[n3]-divisor[n3-diff]+10-subtractcarry
            temp[n3]=Qmod(takeaway)
            subtractcarry=bool(takeaway)
        Next n3 
        If subtractcarry=0 Then Exit Do
         If n3=-1 Then Exit Do
        For n3=n3 To 0 Step -1 
            takeaway= topstring[n3]-48+10-subtractcarry
             temp[n3]=Qmod(takeaway)
            subtractcarry=bool(takeaway)
            Next n3
        Exit Do
        
        Loop 'single run
        temp=Ltrim(temp,"0")
        If temp="" Then temp= "0"
            topstring=temp
        Loop Until temp="done"
     ' INDIVIDUAL CHARACTERS CARVED OFF ________________       
        runcount=runcount+1
       If count=1 Then
           topstring=copytopstring+Mid(number,lend+runcount,1)
           Else
       topstring=copytemp+Mid(number,lend+runcount,1)
   End If
       copytopstring=topstring
       topstring=Ltrim(topstring,"0")
       if dpflag="mod" then
       if runcount=modstop then 
           if topstring="" then return "0"
           return mid(topstring,1,len(topstring)-1)
           end if
       end if
       answer[runcount-1]=count+47
       If topstring="" And runcount>Len(n1)+1 Then
           Exit Do
           End if
   Loop Until runcount=runlength+1
   
   ' END OF RUN TO REQUIRED DECIMAL PLACES
   set(decimal) 'PUT IN THE DECIMAL POINT
  'THERE IS ALWAYS A DECIMAL POINT SOMEWHERE IN THE ANSWER
  'NOW GET RID OF IT IF IT IS REDUNDANT
       answer=Rtrim(answer,"0")
       answer=Rtrim(answer,".")
       answer=Ltrim(answer,"0")
       If answer="" Then Return "0"
   Return sign+answer
End Function

dafhi
Posts: 1641
Joined: Jun 04, 2005 9:51

Re: Squares

Post by dafhi »

i've updated my particles demo

this one clearly demonstrates distinct particle types
Locked