class Celsius2Fahrenheit(Component): @property def signature(self): return Signature({ "c": Out(Q(self.qc[0], self.qc[1])), "f": In(Q(self.qf[0], self.qf[1])) }) def __init__(self, *, qc, qf, muln=5): self.qc = qc self.qf = qf self.muln = muln super().__init__() def elaborate(self, plat): m = Module() ## 1.8 not representable. 1.78125 will have to be close enough. #mul_factor = C(9*2**self.muln // 5) # Q1.{self.muln} #add_factor = C(32 << (self.qc[1] + self.muln)) # Q6.{self.qn + self.muln} ## Technically we get a Q{self.qm + 1}.{self.qn + self.muln} after mul, ## so truncate the extra decimal. ## Overflow prob won't happen. #extra_bits = self.qc[1] + self.muln - self.qf[1] #intermediate = (mul_factor * self.c) + add_factor #m.d.comb += self.f.eq(intermediate >> extra_bits) m.d.comb += self.f.eq(self.c * Q(1, self.muln).const(1.8) + 32) return m if __name__ == "__main__": c2f = Celsius2Fahrenheit(qc=(8, 3), qf=(10, 3), muln=15) if len(sys.argv) > 1 and sys.argv[1] == "sim": sim = Simulator(c2f) def proc(): for i in range(-2**(c2f.qc[0] + c2f.qc[1] - 1), 2**(c2f.qc[0] + c2f.qc[1] - 1)): yield c2f.c.as_value().eq(i) yield Settle() print((yield c2f.c.as_value()) / 2**c2f.qc[1], (yield c2f.f.as_value()) / 2**c2f.qf[1]) sim.add_process(proc) sim.run() else: print(convert(c2f)) ''' $ ./test_am_fp.py sim -128.0 -198.375 -127.875 -198.125 -127.75 -198.0 -127.625 -197.75 -127.5 -197.5 -127.375 -197.25 -127.25 -197.0 -127.125 -196.875 -127.0 -196.625 -126.875 -196.375 -126.75 -196.125 -126.625 -195.875 -126.5 -195.75 -126.375 -195.5 -126.25 -195.25 -126.125 -195.0 -126.0 -194.75 -125.875 -194.625 -125.75 -194.375 -125.625 -194.125 -125.5 -193.875 -125.375 -193.625 -125.25 -193.5 -125.125 -193.25 -125.0 -193.0 -124.875 -192.75 -124.75 -192.5 -124.625 -192.375 -124.5 -192.125 -124.375 -191.875 -124.25 -191.625 -124.125 -191.375 -124.0 -191.25 -123.875 -191.0 -123.75 -190.75 -123.625 -190.5 -123.5 -190.25 -123.375 -190.125 -123.25 -189.875 -123.125 -189.625 -123.0 -189.375 -122.875 -189.125 -122.75 -189.0 -122.625 -188.75 -122.5 -188.5 -122.375 -188.25 -122.25 -188.0 -122.125 -187.875 -122.0 -187.625 -121.875 -187.375 -121.75 -187.125 -121.625 -186.875 -121.5 -186.75 -121.375 -186.5 -121.25 -186.25 -121.125 -186.0 -121.0 -185.75 -120.875 -185.625 -120.75 -185.375 -120.625 -185.125 -120.5 -184.875 -120.375 -184.625 -120.25 -184.5 -120.125 -184.25 -120.0 -184.0 -119.875 -183.75 -119.75 -183.5 -119.625 -183.375 -119.5 -183.125 -119.375 -182.875 -119.25 -182.625 -119.125 -182.375 -119.0 -182.25 -118.875 -182.0 -118.75 -181.75 -118.625 -181.5 -118.5 -181.25 -118.375 -181.125 -118.25 -180.875 -118.125 -180.625 -118.0 -180.375 -117.875 -180.125 -117.75 -180.0 -117.625 -179.75 -117.5 -179.5 -117.375 -179.25 -117.25 -179.0 -117.125 -178.875 -117.0 -178.625 -116.875 -178.375 -116.75 -178.125 -116.625 -177.875 -116.5 -177.75 -116.375 -177.5 -116.25 -177.25 -116.125 -177.0 -116.0 -176.75 -115.875 -176.625 -115.75 -176.375 -115.625 -176.125 -115.5 -175.875 -115.375 -175.625 -115.25 -175.5 -115.125 -175.25 -115.0 -175.0 -114.875 -174.75 -114.75 -174.5 -114.625 -174.375 -114.5 -174.125 -114.375 -173.875 -114.25 -173.625 -114.125 -173.375 -114.0 -173.25 -113.875 -173.0 -113.75 -172.75 -113.625 -172.5 -113.5 -172.25 -113.375 -172.125 -113.25 -171.875 -113.125 -171.625 -113.0 -171.375 -112.875 -171.125 -112.75 -171.0 -112.625 -170.75 -112.5 -170.5 -112.375 -170.25 -112.25 -170.0 -112.125 -169.875 -112.0 -169.625 -111.875 -169.375 -111.75 -169.125 -111.625 -168.875 -111.5 -168.75 -111.375 -168.5 -111.25 -168.25 -111.125 -168.0 -111.0 -167.75 -110.875 -167.625 -110.75 -167.375 -110.625 -167.125 -110.5 -166.875 -110.375 -166.625 -110.25 -166.5 -110.125 -166.25 -110.0 -166.0 -109.875 -165.75 -109.75 -165.5 -109.625 -165.375 -109.5 -165.125 -109.375 -164.875 -109.25 -164.625 -109.125 -164.375 -109.0 -164.25 -108.875 -164.0 -108.75 -163.75 -108.625 -163.5 -108.5 -163.25 -108.375 -163.125 -108.25 -162.875 -108.125 -162.625 -108.0 -162.375 -107.875 -162.125 -107.75 -162.0 -107.625 -161.75 -107.5 -161.5 -107.375 -161.25 -107.25 -161.0 -107.125 -160.875 -107.0 -160.625 -106.875 -160.375 -106.75 -160.125 -106.625 -159.875 -106.5 -159.75 -106.375 -159.5 -106.25 -159.25 -106.125 -159.0 -106.0 -158.75 -105.875 -158.625 -105.75 -158.375 -105.625 -158.125 -105.5 -157.875 -105.375 -157.625 -105.25 -157.5 -105.125 -157.25 -105.0 -157.0 -104.875 -156.75 -104.75 -156.5 -104.625 -156.375 -104.5 -156.125 -104.375 -155.875 -104.25 -155.625 -104.125 -155.375 -104.0 -155.25 -103.875 -155.0 -103.75 -154.75 -103.625 -154.5 -103.5 -154.25 -103.375 -154.125 -103.25 -153.875 -103.125 -153.625 -103.0 -153.375 -102.875 -153.125 -102.75 -153.0 -102.625 -152.75 -102.5 -152.5 -102.375 -152.25 -102.25 -152.0 -102.125 -151.875 -102.0 -151.625 -101.875 -151.375 -101.75 -151.125 -101.625 -150.875 -101.5 -150.75 -101.375 -150.5 -101.25 -150.25 -101.125 -150.0 -101.0 -149.75 -100.875 -149.625 -100.75 -149.375 -100.625 -149.125 -100.5 -148.875 -100.375 -148.625 -100.25 -148.5 -100.125 -148.25 -100.0 -148.0 -99.875 -147.75 -99.75 -147.5 -99.625 -147.375 -99.5 -147.125 -99.375 -146.875 -99.25 -146.625 -99.125 -146.375 -99.0 -146.25 -98.875 -146.0 -98.75 -145.75 -98.625 -145.5 -98.5 -145.25 -98.375 -145.125 -98.25 -144.875 -98.125 -144.625 -98.0 -144.375 -97.875 -144.125 -97.75 -144.0 -97.625 -143.75 -97.5 -143.5 -97.375 -143.25 -97.25 -143.0 -97.125 -142.875 -97.0 -142.625 -96.875 -142.375 -96.75 -142.125 -96.625 -141.875 -96.5 -141.75 -96.375 -141.5 -96.25 -141.25 -96.125 -141.0 -96.0 -140.75 -95.875 -140.625 -95.75 -140.375 -95.625 -140.125 -95.5 -139.875 -95.375 -139.625 -95.25 -139.5 -95.125 -139.25 -95.0 -139.0 -94.875 -138.75 -94.75 -138.5 -94.625 -138.375 -94.5 -138.125 -94.375 -137.875 -94.25 -137.625 -94.125 -137.375 -94.0 -137.25 -93.875 -137.0 -93.75 -136.75 -93.625 -136.5 -93.5 -136.25 -93.375 -136.125 -93.25 -135.875 -93.125 -135.625 -93.0 -135.375 -92.875 -135.125 -92.75 -135.0 -92.625 -134.75 -92.5 -134.5 -92.375 -134.25 -92.25 -134.0 -92.125 -133.875 -92.0 -133.625 -91.875 -133.375 -91.75 -133.125 -91.625 -132.875 -91.5 -132.75 -91.375 -132.5 -91.25 -132.25 -91.125 -132.0 -91.0 -131.75 -90.875 -131.625 -90.75 -131.375 -90.625 -131.125 -90.5 -130.875 -90.375 -130.625 -90.25 -130.5 -90.125 -130.25 -90.0 -130.0 -89.875 -129.75 -89.75 -129.5 -89.625 -129.375 -89.5 -129.125 -89.375 -128.875 -89.25 -128.625 -89.125 -128.375 -89.0 -128.25 -88.875 -128.0 -88.75 -127.75 -88.625 -127.5 -88.5 -127.25 -88.375 -127.125 -88.25 -126.875 -88.125 -126.625 -88.0 -126.375 -87.875 -126.125 -87.75 -126.0 -87.625 -125.75 -87.5 -125.5 -87.375 -125.25 -87.25 -125.0 -87.125 -124.875 -87.0 -124.625 -86.875 -124.375 -86.75 -124.125 -86.625 -123.875 -86.5 -123.75 -86.375 -123.5 -86.25 -123.25 -86.125 -123.0 -86.0 -122.75 -85.875 -122.625 -85.75 -122.375 -85.625 -122.125 -85.5 -121.875 -85.375 -121.625 -85.25 -121.5 -85.125 -121.25 -85.0 -121.0 -84.875 -120.75 -84.75 -120.5 -84.625 -120.375 -84.5 -120.125 -84.375 -119.875 -84.25 -119.625 -84.125 -119.375 -84.0 -119.25 -83.875 -119.0 -83.75 -118.75 -83.625 -118.5 -83.5 -118.25 -83.375 -118.125 -83.25 -117.875 -83.125 -117.625 -83.0 -117.375 -82.875 -117.125 -82.75 -117.0 -82.625 -116.75 -82.5 -116.5 -82.375 -116.25 -82.25 -116.0 -82.125 -115.875 -82.0 -115.625 -81.875 -115.375 -81.75 -115.125 -81.625 -114.875 -81.5 -114.75 -81.375 -114.5 -81.25 -114.25 -81.125 -114.0 -81.0 -113.75 -80.875 -113.625 -80.75 -113.375 -80.625 -113.125 -80.5 -112.875 -80.375 -112.625 -80.25 -112.5 -80.125 -112.25 -80.0 -112.0 -79.875 -111.75 -79.75 -111.5 -79.625 -111.375 -79.5 -111.125 -79.375 -110.875 -79.25 -110.625 -79.125 -110.375 -79.0 -110.25 -78.875 -110.0 -78.75 -109.75 -78.625 -109.5 -78.5 -109.25 -78.375 -109.125 -78.25 -108.875 -78.125 -108.625 -78.0 -108.375 -77.875 -108.125 -77.75 -108.0 -77.625 -107.75 -77.5 -107.5 -77.375 -107.25 -77.25 -107.0 -77.125 -106.875 -77.0 -106.625 -76.875 -106.375 -76.75 -106.125 -76.625 -105.875 -76.5 -105.75 -76.375 -105.5 -76.25 -105.25 -76.125 -105.0 -76.0 -104.75 -75.875 -104.625 -75.75 -104.375 -75.625 -104.125 -75.5 -103.875 -75.375 -103.625 -75.25 -103.5 -75.125 -103.25 -75.0 -103.0 -74.875 -102.75 -74.75 -102.5 -74.625 -102.375 -74.5 -102.125 -74.375 -101.875 -74.25 -101.625 -74.125 -101.375 -74.0 -101.25 -73.875 -101.0 -73.75 -100.75 -73.625 -100.5 -73.5 -100.25 -73.375 -100.125 -73.25 -99.875 -73.125 -99.625 -73.0 -99.375 -72.875 -99.125 -72.75 -99.0 -72.625 -98.75 -72.5 -98.5 -72.375 -98.25 -72.25 -98.0 -72.125 -97.875 -72.0 -97.625 -71.875 -97.375 -71.75 -97.125 -71.625 -96.875 -71.5 -96.75 -71.375 -96.5 -71.25 -96.25 -71.125 -96.0 -71.0 -95.75 -70.875 -95.625 -70.75 -95.375 -70.625 -95.125 -70.5 -94.875 -70.375 -94.625 -70.25 -94.5 -70.125 -94.25 -70.0 -94.0 -69.875 -93.75 -69.75 -93.5 -69.625 -93.375 -69.5 -93.125 -69.375 -92.875 -69.25 -92.625 -69.125 -92.375 -69.0 -92.25 -68.875 -92.0 -68.75 -91.75 -68.625 -91.5 -68.5 -91.25 -68.375 -91.125 -68.25 -90.875 -68.125 -90.625 -68.0 -90.375 -67.875 -90.125 -67.75 -90.0 -67.625 -89.75 -67.5 -89.5 -67.375 -89.25 -67.25 -89.0 -67.125 -88.875 -67.0 -88.625 -66.875 -88.375 -66.75 -88.125 -66.625 -87.875 -66.5 -87.75 -66.375 -87.5 -66.25 -87.25 -66.125 -87.0 -66.0 -86.75 -65.875 -86.625 -65.75 -86.375 -65.625 -86.125 -65.5 -85.875 -65.375 -85.625 -65.25 -85.5 -65.125 -85.25 -65.0 -85.0 -64.875 -84.75 -64.75 -84.5 -64.625 -84.375 -64.5 -84.125 -64.375 -83.875 -64.25 -83.625 -64.125 -83.375 -64.0 -83.25 -63.875 -83.0 -63.75 -82.75 -63.625 -82.5 -63.5 -82.25 -63.375 -82.125 -63.25 -81.875 -63.125 -81.625 -63.0 -81.375 -62.875 -81.125 -62.75 -81.0 -62.625 -80.75 -62.5 -80.5 -62.375 -80.25 -62.25 -80.0 -62.125 -79.875 -62.0 -79.625 -61.875 -79.375 -61.75 -79.125 -61.625 -78.875 -61.5 -78.75 -61.375 -78.5 -61.25 -78.25 -61.125 -78.0 -61.0 -77.75 -60.875 -77.625 -60.75 -77.375 -60.625 -77.125 -60.5 -76.875 -60.375 -76.625 -60.25 -76.5 -60.125 -76.25 -60.0 -76.0 -59.875 -75.75 -59.75 -75.5 -59.625 -75.375 -59.5 -75.125 -59.375 -74.875 -59.25 -74.625 -59.125 -74.375 -59.0 -74.25 -58.875 -74.0 -58.75 -73.75 -58.625 -73.5 -58.5 -73.25 -58.375 -73.125 -58.25 -72.875 -58.125 -72.625 -58.0 -72.375 -57.875 -72.125 -57.75 -72.0 -57.625 -71.75 -57.5 -71.5 -57.375 -71.25 -57.25 -71.0 -57.125 -70.875 -57.0 -70.625 -56.875 -70.375 -56.75 -70.125 -56.625 -69.875 -56.5 -69.75 -56.375 -69.5 -56.25 -69.25 -56.125 -69.0 -56.0 -68.75 -55.875 -68.625 -55.75 -68.375 -55.625 -68.125 -55.5 -67.875 -55.375 -67.625 -55.25 -67.5 -55.125 -67.25 -55.0 -67.0 -54.875 -66.75 -54.75 -66.5 -54.625 -66.375 -54.5 -66.125 -54.375 -65.875 -54.25 -65.625 -54.125 -65.375 -54.0 -65.25 -53.875 -65.0 -53.75 -64.75 -53.625 -64.5 -53.5 -64.25 -53.375 -64.125 -53.25 -63.875 -53.125 -63.625 -53.0 -63.375 -52.875 -63.125 -52.75 -63.0 -52.625 -62.75 -52.5 -62.5 -52.375 -62.25 -52.25 -62.0 -52.125 -61.875 -52.0 -61.625 -51.875 -61.375 -51.75 -61.125 -51.625 -60.875 -51.5 -60.75 -51.375 -60.5 -51.25 -60.25 -51.125 -60.0 -51.0 -59.75 -50.875 -59.625 -50.75 -59.375 -50.625 -59.125 -50.5 -58.875 -50.375 -58.625 -50.25 -58.5 -50.125 -58.25 -50.0 -58.0 -49.875 -57.75 -49.75 -57.5 -49.625 -57.375 -49.5 -57.125 -49.375 -56.875 -49.25 -56.625 -49.125 -56.375 -49.0 -56.25 -48.875 -56.0 -48.75 -55.75 -48.625 -55.5 -48.5 -55.25 -48.375 -55.125 -48.25 -54.875 -48.125 -54.625 -48.0 -54.375 -47.875 -54.125 -47.75 -54.0 -47.625 -53.75 -47.5 -53.5 -47.375 -53.25 -47.25 -53.0 -47.125 -52.875 -47.0 -52.625 -46.875 -52.375 -46.75 -52.125 -46.625 -51.875 -46.5 -51.75 -46.375 -51.5 -46.25 -51.25 -46.125 -51.0 -46.0 -50.75 -45.875 -50.625 -45.75 -50.375 -45.625 -50.125 -45.5 -49.875 -45.375 -49.625 -45.25 -49.5 -45.125 -49.25 -45.0 -49.0 -44.875 -48.75 -44.75 -48.5 -44.625 -48.375 -44.5 -48.125 -44.375 -47.875 -44.25 -47.625 -44.125 -47.375 -44.0 -47.25 -43.875 -47.0 -43.75 -46.75 -43.625 -46.5 -43.5 -46.25 -43.375 -46.125 -43.25 -45.875 -43.125 -45.625 -43.0 -45.375 -42.875 -45.125 -42.75 -45.0 -42.625 -44.75 -42.5 -44.5 -42.375 -44.25 -42.25 -44.0 -42.125 -43.875 -42.0 -43.625 -41.875 -43.375 -41.75 -43.125 -41.625 -42.875 -41.5 -42.75 -41.375 -42.5 -41.25 -42.25 -41.125 -42.0 -41.0 -41.75 -40.875 -41.625 -40.75 -41.375 -40.625 -41.125 -40.5 -40.875 -40.375 -40.625 -40.25 -40.5 -40.125 -40.25 -40.0 -40.0 -39.875 -39.75 -39.75 -39.5 -39.625 -39.375 -39.5 -39.125 -39.375 -38.875 -39.25 -38.625 -39.125 -38.375 -39.0 -38.25 -38.875 -38.0 -38.75 -37.75 -38.625 -37.5 -38.5 -37.25 -38.375 -37.125 -38.25 -36.875 -38.125 -36.625 -38.0 -36.375 -37.875 -36.125 -37.75 -36.0 -37.625 -35.75 -37.5 -35.5 -37.375 -35.25 -37.25 -35.0 -37.125 -34.875 -37.0 -34.625 -36.875 -34.375 -36.75 -34.125 -36.625 -33.875 -36.5 -33.75 -36.375 -33.5 -36.25 -33.25 -36.125 -33.0 -36.0 -32.75 -35.875 -32.625 -35.75 -32.375 -35.625 -32.125 -35.5 -31.875 -35.375 -31.625 -35.25 -31.5 -35.125 -31.25 -35.0 -31.0 -34.875 -30.75 -34.75 -30.5 -34.625 -30.375 -34.5 -30.125 -34.375 -29.875 -34.25 -29.625 -34.125 -29.375 -34.0 -29.25 -33.875 -29.0 -33.75 -28.75 -33.625 -28.5 -33.5 -28.25 -33.375 -28.125 -33.25 -27.875 -33.125 -27.625 -33.0 -27.375 -32.875 -27.125 -32.75 -27.0 -32.625 -26.75 -32.5 -26.5 -32.375 -26.25 -32.25 -26.0 -32.125 -25.875 -32.0 -25.625 -31.875 -25.375 -31.75 -25.125 -31.625 -24.875 -31.5 -24.75 -31.375 -24.5 -31.25 -24.25 -31.125 -24.0 -31.0 -23.75 -30.875 -23.625 -30.75 -23.375 -30.625 -23.125 -30.5 -22.875 -30.375 -22.625 -30.25 -22.5 -30.125 -22.25 -30.0 -22.0 -29.875 -21.75 -29.75 -21.5 -29.625 -21.375 -29.5 -21.125 -29.375 -20.875 -29.25 -20.625 -29.125 -20.375 -29.0 -20.25 -28.875 -20.0 -28.75 -19.75 -28.625 -19.5 -28.5 -19.25 -28.375 -19.125 -28.25 -18.875 -28.125 -18.625 -28.0 -18.375 -27.875 -18.125 -27.75 -18.0 -27.625 -17.75 -27.5 -17.5 -27.375 -17.25 -27.25 -17.0 -27.125 -16.875 -27.0 -16.625 -26.875 -16.375 -26.75 -16.125 -26.625 -15.875 -26.5 -15.75 -26.375 -15.5 -26.25 -15.25 -26.125 -15.0 -26.0 -14.75 -25.875 -14.625 -25.75 -14.375 -25.625 -14.125 -25.5 -13.875 -25.375 -13.625 -25.25 -13.5 -25.125 -13.25 -25.0 -13.0 -24.875 -12.75 -24.75 -12.5 -24.625 -12.375 -24.5 -12.125 -24.375 -11.875 -24.25 -11.625 -24.125 -11.375 -24.0 -11.25 -23.875 -11.0 -23.75 -10.75 -23.625 -10.5 -23.5 -10.25 -23.375 -10.125 -23.25 -9.875 -23.125 -9.625 -23.0 -9.375 -22.875 -9.125 -22.75 -9.0 -22.625 -8.75 -22.5 -8.5 -22.375 -8.25 -22.25 -8.0 -22.125 -7.875 -22.0 -7.625 -21.875 -7.375 -21.75 -7.125 -21.625 -6.875 -21.5 -6.75 -21.375 -6.5 -21.25 -6.25 -21.125 -6.0 -21.0 -5.75 -20.875 -5.625 -20.75 -5.375 -20.625 -5.125 -20.5 -4.875 -20.375 -4.625 -20.25 -4.5 -20.125 -4.25 -20.0 -4.0 -19.875 -3.75 -19.75 -3.5 -19.625 -3.375 -19.5 -3.125 -19.375 -2.875 -19.25 -2.625 -19.125 -2.375 -19.0 -2.25 -18.875 -2.0 -18.75 -1.75 -18.625 -1.5 -18.5 -1.25 -18.375 -1.125 -18.25 -0.875 -18.125 -0.625 -18.0 -0.375 -17.875 -0.125 -17.75 0.0 -17.625 0.25 -17.5 0.5 -17.375 0.75 -17.25 1.0 -17.125 1.125 -17.0 1.375 -16.875 1.625 -16.75 1.875 -16.625 2.125 -16.5 2.25 -16.375 2.5 -16.25 2.75 -16.125 3.0 -16.0 3.25 -15.875 3.375 -15.75 3.625 -15.625 3.875 -15.5 4.125 -15.375 4.375 -15.25 4.5 -15.125 4.75 -15.0 5.0 -14.875 5.25 -14.75 5.5 -14.625 5.625 -14.5 5.875 -14.375 6.125 -14.25 6.375 -14.125 6.625 -14.0 6.75 -13.875 7.0 -13.75 7.25 -13.625 7.5 -13.5 7.75 -13.375 7.875 -13.25 8.125 -13.125 8.375 -13.0 8.625 -12.875 8.875 -12.75 9.0 -12.625 9.25 -12.5 9.5 -12.375 9.75 -12.25 10.0 -12.125 10.125 -12.0 10.375 -11.875 10.625 -11.75 10.875 -11.625 11.125 -11.5 11.25 -11.375 11.5 -11.25 11.75 -11.125 12.0 -11.0 12.25 -10.875 12.375 -10.75 12.625 -10.625 12.875 -10.5 13.125 -10.375 13.375 -10.25 13.5 -10.125 13.75 -10.0 14.0 -9.875 14.25 -9.75 14.5 -9.625 14.625 -9.5 14.875 -9.375 15.125 -9.25 15.375 -9.125 15.625 -9.0 15.75 -8.875 16.0 -8.75 16.25 -8.625 16.5 -8.5 16.75 -8.375 16.875 -8.25 17.125 -8.125 17.375 -8.0 17.625 -7.875 17.875 -7.75 18.0 -7.625 18.25 -7.5 18.5 -7.375 18.75 -7.25 19.0 -7.125 19.125 -7.0 19.375 -6.875 19.625 -6.75 19.875 -6.625 20.125 -6.5 20.25 -6.375 20.5 -6.25 20.75 -6.125 21.0 -6.0 21.25 -5.875 21.375 -5.75 21.625 -5.625 21.875 -5.5 22.125 -5.375 22.375 -5.25 22.5 -5.125 22.75 -5.0 23.0 -4.875 23.25 -4.75 23.5 -4.625 23.625 -4.5 23.875 -4.375 24.125 -4.25 24.375 -4.125 24.625 -4.0 24.75 -3.875 25.0 -3.75 25.25 -3.625 25.5 -3.5 25.75 -3.375 25.875 -3.25 26.125 -3.125 26.375 -3.0 26.625 -2.875 26.875 -2.75 27.0 -2.625 27.25 -2.5 27.5 -2.375 27.75 -2.25 28.0 -2.125 28.125 -2.0 28.375 -1.875 28.625 -1.75 28.875 -1.625 29.125 -1.5 29.25 -1.375 29.5 -1.25 29.75 -1.125 30.0 -1.0 30.25 -0.875 30.375 -0.75 30.625 -0.625 30.875 -0.5 31.125 -0.375 31.375 -0.25 31.5 -0.125 31.75 0.0 32.0 0.125 32.25 0.25 32.5 0.375 32.625 0.5 32.875 0.625 33.125 0.75 33.375 0.875 33.625 1.0 33.75 1.125 34.0 1.25 34.25 1.375 34.5 1.5 34.75 1.625 34.875 1.75 35.125 1.875 35.375 2.0 35.625 2.125 35.875 2.25 36.0 2.375 36.25 2.5 36.5 2.625 36.75 2.75 37.0 2.875 37.125 3.0 37.375 3.125 37.625 3.25 37.875 3.375 38.125 3.5 38.25 3.625 38.5 3.75 38.75 3.875 39.0 4.0 39.25 4.125 39.375 4.25 39.625 4.375 39.875 4.5 40.125 4.625 40.375 4.75 40.5 4.875 40.75 5.0 41.0 5.125 41.25 5.25 41.5 5.375 41.625 5.5 41.875 5.625 42.125 5.75 42.375 5.875 42.625 6.0 42.75 6.125 43.0 6.25 43.25 6.375 43.5 6.5 43.75 6.625 43.875 6.75 44.125 6.875 44.375 7.0 44.625 7.125 44.875 7.25 45.0 7.375 45.25 7.5 45.5 7.625 45.75 7.75 46.0 7.875 46.125 8.0 46.375 8.125 46.625 8.25 46.875 8.375 47.125 8.5 47.25 8.625 47.5 8.75 47.75 8.875 48.0 9.0 48.25 9.125 48.375 9.25 48.625 9.375 48.875 9.5 49.125 9.625 49.375 9.75 49.5 9.875 49.75 10.0 50.0 10.125 50.25 10.25 50.5 10.375 50.625 10.5 50.875 10.625 51.125 10.75 51.375 10.875 51.625 11.0 51.75 11.125 52.0 11.25 52.25 11.375 52.5 11.5 52.75 11.625 52.875 11.75 53.125 11.875 53.375 12.0 53.625 12.125 53.875 12.25 54.0 12.375 54.25 12.5 54.5 12.625 54.75 12.75 55.0 12.875 55.125 13.0 55.375 13.125 55.625 13.25 55.875 13.375 56.125 13.5 56.25 13.625 56.5 13.75 56.75 13.875 57.0 14.0 57.25 14.125 57.375 14.25 57.625 14.375 57.875 14.5 58.125 14.625 58.375 14.75 58.5 14.875 58.75 15.0 59.0 15.125 59.25 15.25 59.5 15.375 59.625 15.5 59.875 15.625 60.125 15.75 60.375 15.875 60.625 16.0 60.75 16.125 61.0 16.25 61.25 16.375 61.5 16.5 61.75 16.625 61.875 16.75 62.125 16.875 62.375 17.0 62.625 17.125 62.875 17.25 63.0 17.375 63.25 17.5 63.5 17.625 63.75 17.75 64.0 17.875 64.125 18.0 64.375 18.125 64.625 18.25 64.875 18.375 65.125 18.5 65.25 18.625 65.5 18.75 65.75 18.875 66.0 19.0 66.25 19.125 66.375 19.25 66.625 19.375 66.875 19.5 67.125 19.625 67.375 19.75 67.5 19.875 67.75 20.0 68.0 20.125 68.25 20.25 68.5 20.375 68.625 20.5 68.875 20.625 69.125 20.75 69.375 20.875 69.625 21.0 69.75 21.125 70.0 21.25 70.25 21.375 70.5 21.5 70.75 21.625 70.875 21.75 71.125 21.875 71.375 22.0 71.625 22.125 71.875 22.25 72.0 22.375 72.25 22.5 72.5 22.625 72.75 22.75 73.0 22.875 73.125 23.0 73.375 23.125 73.625 23.25 73.875 23.375 74.125 23.5 74.25 23.625 74.5 23.75 74.75 23.875 75.0 24.0 75.25 24.125 75.375 24.25 75.625 24.375 75.875 24.5 76.125 24.625 76.375 24.75 76.5 24.875 76.75 25.0 77.0 25.125 77.25 25.25 77.5 25.375 77.625 25.5 77.875 25.625 78.125 25.75 78.375 25.875 78.625 26.0 78.75 26.125 79.0 26.25 79.25 26.375 79.5 26.5 79.75 26.625 79.875 26.75 80.125 26.875 80.375 27.0 80.625 27.125 80.875 27.25 81.0 27.375 81.25 27.5 81.5 27.625 81.75 27.75 82.0 27.875 82.125 28.0 82.375 28.125 82.625 28.25 82.875 28.375 83.125 28.5 83.25 28.625 83.5 28.75 83.75 28.875 84.0 29.0 84.25 29.125 84.375 29.25 84.625 29.375 84.875 29.5 85.125 29.625 85.375 29.75 85.5 29.875 85.75 30.0 86.0 30.125 86.25 30.25 86.5 30.375 86.625 30.5 86.875 30.625 87.125 30.75 87.375 30.875 87.625 31.0 87.75 31.125 88.0 31.25 88.25 31.375 88.5 31.5 88.75 31.625 88.875 31.75 89.125 31.875 89.375 32.0 89.625 32.125 89.875 32.25 90.0 32.375 90.25 32.5 90.5 32.625 90.75 32.75 91.0 32.875 91.125 33.0 91.375 33.125 91.625 33.25 91.875 33.375 92.125 33.5 92.25 33.625 92.5 33.75 92.75 33.875 93.0 34.0 93.25 34.125 93.375 34.25 93.625 34.375 93.875 34.5 94.125 34.625 94.375 34.75 94.5 34.875 94.75 35.0 95.0 35.125 95.25 35.25 95.5 35.375 95.625 35.5 95.875 35.625 96.125 35.75 96.375 35.875 96.625 36.0 96.75 36.125 97.0 36.25 97.25 36.375 97.5 36.5 97.75 36.625 97.875 36.75 98.125 36.875 98.375 37.0 98.625 37.125 98.875 37.25 99.0 37.375 99.25 37.5 99.5 37.625 99.75 37.75 100.0 37.875 100.125 38.0 100.375 38.125 100.625 38.25 100.875 38.375 101.125 38.5 101.25 38.625 101.5 38.75 101.75 38.875 102.0 39.0 102.25 39.125 102.375 39.25 102.625 39.375 102.875 39.5 103.125 39.625 103.375 39.75 103.5 39.875 103.75 40.0 104.0 40.125 104.25 40.25 104.5 40.375 104.625 40.5 104.875 40.625 105.125 40.75 105.375 40.875 105.625 41.0 105.75 41.125 106.0 41.25 106.25 41.375 106.5 41.5 106.75 41.625 106.875 41.75 107.125 41.875 107.375 42.0 107.625 42.125 107.875 42.25 108.0 42.375 108.25 42.5 108.5 42.625 108.75 42.75 109.0 42.875 109.125 43.0 109.375 43.125 109.625 43.25 109.875 43.375 110.125 43.5 110.25 43.625 110.5 43.75 110.75 43.875 111.0 44.0 111.25 44.125 111.375 44.25 111.625 44.375 111.875 44.5 112.125 44.625 112.375 44.75 112.5 44.875 112.75 45.0 113.0 45.125 113.25 45.25 113.5 45.375 113.625 45.5 113.875 45.625 114.125 45.75 114.375 45.875 114.625 46.0 114.75 46.125 115.0 46.25 115.25 46.375 115.5 46.5 115.75 46.625 115.875 46.75 116.125 46.875 116.375 47.0 116.625 47.125 116.875 47.25 117.0 47.375 117.25 47.5 117.5 47.625 117.75 47.75 118.0 47.875 118.125 48.0 118.375 48.125 118.625 48.25 118.875 48.375 119.125 48.5 119.25 48.625 119.5 48.75 119.75 48.875 120.0 49.0 120.25 49.125 120.375 49.25 120.625 49.375 120.875 49.5 121.125 49.625 121.375 49.75 121.5 49.875 121.75 50.0 122.0 50.125 122.25 50.25 122.5 50.375 122.625 50.5 122.875 50.625 123.125 50.75 123.375 50.875 123.625 51.0 123.75 51.125 124.0 51.25 124.25 51.375 124.5 51.5 124.75 51.625 124.875 51.75 125.125 51.875 125.375 52.0 125.625 52.125 125.875 52.25 126.0 52.375 126.25 52.5 126.5 52.625 126.75 52.75 127.0 52.875 127.125 53.0 127.375 53.125 127.625 53.25 127.875 53.375 128.125 53.5 128.25 53.625 128.5 53.75 128.75 53.875 129.0 54.0 129.25 54.125 129.375 54.25 129.625 54.375 129.875 54.5 130.125 54.625 130.375 54.75 130.5 54.875 130.75 55.0 131.0 55.125 131.25 55.25 131.5 55.375 131.625 55.5 131.875 55.625 132.125 55.75 132.375 55.875 132.625 56.0 132.75 56.125 133.0 56.25 133.25 56.375 133.5 56.5 133.75 56.625 133.875 56.75 134.125 56.875 134.375 57.0 134.625 57.125 134.875 57.25 135.0 57.375 135.25 57.5 135.5 57.625 135.75 57.75 136.0 57.875 136.125 58.0 136.375 58.125 136.625 58.25 136.875 58.375 137.125 58.5 137.25 58.625 137.5 58.75 137.75 58.875 138.0 59.0 138.25 59.125 138.375 59.25 138.625 59.375 138.875 59.5 139.125 59.625 139.375 59.75 139.5 59.875 139.75 60.0 140.0 60.125 140.25 60.25 140.5 60.375 140.625 60.5 140.875 60.625 141.125 60.75 141.375 60.875 141.625 61.0 141.75 61.125 142.0 61.25 142.25 61.375 142.5 61.5 142.75 61.625 142.875 61.75 143.125 61.875 143.375 62.0 143.625 62.125 143.875 62.25 144.0 62.375 144.25 62.5 144.5 62.625 144.75 62.75 145.0 62.875 145.125 63.0 145.375 63.125 145.625 63.25 145.875 63.375 146.125 63.5 146.25 63.625 146.5 63.75 146.75 63.875 147.0 64.0 147.25 64.125 147.375 64.25 147.625 64.375 147.875 64.5 148.125 64.625 148.375 64.75 148.5 64.875 148.75 65.0 149.0 65.125 149.25 65.25 149.5 65.375 149.625 65.5 149.875 65.625 150.125 65.75 150.375 65.875 150.625 66.0 150.75 66.125 151.0 66.25 151.25 66.375 151.5 66.5 151.75 66.625 151.875 66.75 152.125 66.875 152.375 67.0 152.625 67.125 152.875 67.25 153.0 67.375 153.25 67.5 153.5 67.625 153.75 67.75 154.0 67.875 154.125 68.0 154.375 68.125 154.625 68.25 154.875 68.375 155.125 68.5 155.25 68.625 155.5 68.75 155.75 68.875 156.0 69.0 156.25 69.125 156.375 69.25 156.625 69.375 156.875 69.5 157.125 69.625 157.375 69.75 157.5 69.875 157.75 70.0 158.0 70.125 158.25 70.25 158.5 70.375 158.625 70.5 158.875 70.625 159.125 70.75 159.375 70.875 159.625 71.0 159.75 71.125 160.0 71.25 160.25 71.375 160.5 71.5 160.75 71.625 160.875 71.75 161.125 71.875 161.375 72.0 161.625 72.125 161.875 72.25 162.0 72.375 162.25 72.5 162.5 72.625 162.75 72.75 163.0 72.875 163.125 73.0 163.375 73.125 163.625 73.25 163.875 73.375 164.125 73.5 164.25 73.625 164.5 73.75 164.75 73.875 165.0 74.0 165.25 74.125 165.375 74.25 165.625 74.375 165.875 74.5 166.125 74.625 166.375 74.75 166.5 74.875 166.75 75.0 167.0 75.125 167.25 75.25 167.5 75.375 167.625 75.5 167.875 75.625 168.125 75.75 168.375 75.875 168.625 76.0 168.75 76.125 169.0 76.25 169.25 76.375 169.5 76.5 169.75 76.625 169.875 76.75 170.125 76.875 170.375 77.0 170.625 77.125 170.875 77.25 171.0 77.375 171.25 77.5 171.5 77.625 171.75 77.75 172.0 77.875 172.125 78.0 172.375 78.125 172.625 78.25 172.875 78.375 173.125 78.5 173.25 78.625 173.5 78.75 173.75 78.875 174.0 79.0 174.25 79.125 174.375 79.25 174.625 79.375 174.875 79.5 175.125 79.625 175.375 79.75 175.5 79.875 175.75 80.0 176.0 80.125 176.25 80.25 176.5 80.375 176.625 80.5 176.875 80.625 177.125 80.75 177.375 80.875 177.625 81.0 177.75 81.125 178.0 81.25 178.25 81.375 178.5 81.5 178.75 81.625 178.875 81.75 179.125 81.875 179.375 82.0 179.625 82.125 179.875 82.25 180.0 82.375 180.25 82.5 180.5 82.625 180.75 82.75 181.0 82.875 181.125 83.0 181.375 83.125 181.625 83.25 181.875 83.375 182.125 83.5 182.25 83.625 182.5 83.75 182.75 83.875 183.0 84.0 183.25 84.125 183.375 84.25 183.625 84.375 183.875 84.5 184.125 84.625 184.375 84.75 184.5 84.875 184.75 85.0 185.0 85.125 185.25 85.25 185.5 85.375 185.625 85.5 185.875 85.625 186.125 85.75 186.375 85.875 186.625 86.0 186.75 86.125 187.0 86.25 187.25 86.375 187.5 86.5 187.75 86.625 187.875 86.75 188.125 86.875 188.375 87.0 188.625 87.125 188.875 87.25 189.0 87.375 189.25 87.5 189.5 87.625 189.75 87.75 190.0 87.875 190.125 88.0 190.375 88.125 190.625 88.25 190.875 88.375 191.125 88.5 191.25 88.625 191.5 88.75 191.75 88.875 192.0 89.0 192.25 89.125 192.375 89.25 192.625 89.375 192.875 89.5 193.125 89.625 193.375 89.75 193.5 89.875 193.75 90.0 194.0 90.125 194.25 90.25 194.5 90.375 194.625 90.5 194.875 90.625 195.125 90.75 195.375 90.875 195.625 91.0 195.75 91.125 196.0 91.25 196.25 91.375 196.5 91.5 196.75 91.625 196.875 91.75 197.125 91.875 197.375 92.0 197.625 92.125 197.875 92.25 198.0 92.375 198.25 92.5 198.5 92.625 198.75 92.75 199.0 92.875 199.125 93.0 199.375 93.125 199.625 93.25 199.875 93.375 200.125 93.5 200.25 93.625 200.5 93.75 200.75 93.875 201.0 94.0 201.25 94.125 201.375 94.25 201.625 94.375 201.875 94.5 202.125 94.625 202.375 94.75 202.5 94.875 202.75 95.0 203.0 95.125 203.25 95.25 203.5 95.375 203.625 95.5 203.875 95.625 204.125 95.75 204.375 95.875 204.625 96.0 204.75 96.125 205.0 96.25 205.25 96.375 205.5 96.5 205.75 96.625 205.875 96.75 206.125 96.875 206.375 97.0 206.625 97.125 206.875 97.25 207.0 97.375 207.25 97.5 207.5 97.625 207.75 97.75 208.0 97.875 208.125 98.0 208.375 98.125 208.625 98.25 208.875 98.375 209.125 98.5 209.25 98.625 209.5 98.75 209.75 98.875 210.0 99.0 210.25 99.125 210.375 99.25 210.625 99.375 210.875 99.5 211.125 99.625 211.375 99.75 211.5 99.875 211.75 100.0 212.0 100.125 212.25 100.25 212.5 100.375 212.625 100.5 212.875 100.625 213.125 100.75 213.375 100.875 213.625 101.0 213.75 101.125 214.0 101.25 214.25 101.375 214.5 101.5 214.75 101.625 214.875 101.75 215.125 101.875 215.375 102.0 215.625 102.125 215.875 102.25 216.0 102.375 216.25 102.5 216.5 102.625 216.75 102.75 217.0 102.875 217.125 103.0 217.375 103.125 217.625 103.25 217.875 103.375 218.125 103.5 218.25 103.625 218.5 103.75 218.75 103.875 219.0 104.0 219.25 104.125 219.375 104.25 219.625 104.375 219.875 104.5 220.125 104.625 220.375 104.75 220.5 104.875 220.75 105.0 221.0 105.125 221.25 105.25 221.5 105.375 221.625 105.5 221.875 105.625 222.125 105.75 222.375 105.875 222.625 106.0 222.75 106.125 223.0 106.25 223.25 106.375 223.5 106.5 223.75 106.625 223.875 106.75 224.125 106.875 224.375 107.0 224.625 107.125 224.875 107.25 225.0 107.375 225.25 107.5 225.5 107.625 225.75 107.75 226.0 107.875 226.125 108.0 226.375 108.125 226.625 108.25 226.875 108.375 227.125 108.5 227.25 108.625 227.5 108.75 227.75 108.875 228.0 109.0 228.25 109.125 228.375 109.25 228.625 109.375 228.875 109.5 229.125 109.625 229.375 109.75 229.5 109.875 229.75 110.0 230.0 110.125 230.25 110.25 230.5 110.375 230.625 110.5 230.875 110.625 231.125 110.75 231.375 110.875 231.625 111.0 231.75 111.125 232.0 111.25 232.25 111.375 232.5 111.5 232.75 111.625 232.875 111.75 233.125 111.875 233.375 112.0 233.625 112.125 233.875 112.25 234.0 112.375 234.25 112.5 234.5 112.625 234.75 112.75 235.0 112.875 235.125 113.0 235.375 113.125 235.625 113.25 235.875 113.375 236.125 113.5 236.25 113.625 236.5 113.75 236.75 113.875 237.0 114.0 237.25 114.125 237.375 114.25 237.625 114.375 237.875 114.5 238.125 114.625 238.375 114.75 238.5 114.875 238.75 115.0 239.0 115.125 239.25 115.25 239.5 115.375 239.625 115.5 239.875 115.625 240.125 115.75 240.375 115.875 240.625 116.0 240.75 116.125 241.0 116.25 241.25 116.375 241.5 116.5 241.75 116.625 241.875 116.75 242.125 116.875 242.375 117.0 242.625 117.125 242.875 117.25 243.0 117.375 243.25 117.5 243.5 117.625 243.75 117.75 244.0 117.875 244.125 118.0 244.375 118.125 244.625 118.25 244.875 118.375 245.125 118.5 245.25 118.625 245.5 118.75 245.75 118.875 246.0 119.0 246.25 119.125 246.375 119.25 246.625 119.375 246.875 119.5 247.125 119.625 247.375 119.75 247.5 119.875 247.75 120.0 248.0 120.125 248.25 120.25 248.5 120.375 248.625 120.5 248.875 120.625 249.125 120.75 249.375 120.875 249.625 121.0 249.75 121.125 250.0 121.25 250.25 121.375 250.5 121.5 250.75 121.625 250.875 121.75 251.125 121.875 251.375 122.0 251.625 122.125 251.875 122.25 252.0 122.375 252.25 122.5 252.5 122.625 252.75 122.75 253.0 122.875 253.125 123.0 253.375 123.125 253.625 123.25 253.875 123.375 254.125 123.5 254.25 123.625 254.5 123.75 254.75 123.875 255.0 124.0 255.25 124.125 255.375 124.25 255.625 124.375 255.875 124.5 256.125 124.625 256.375 124.75 256.5 124.875 256.75 125.0 257.0 125.125 257.25 125.25 257.5 125.375 257.625 125.5 257.875 125.625 258.125 125.75 258.375 125.875 258.625 126.0 258.75 126.125 259.0 126.25 259.25 126.375 259.5 126.5 259.75 126.625 259.875 126.75 260.125 126.875 260.375 127.0 260.625 127.125 260.875 127.25 261.0 127.375 261.25 127.5 261.5 127.625 261.75 127.75 262.0 127.875 262.125 '''