#robotics | Logs for 2017-01-02

Back
[00:00:16] <ferdna> yeah
[00:05:20] <Anniepoo_> remember it's a pump, so it'll produce heat even without friction
[00:15:42] <z64555> yeah, from the air it's acting on
[00:15:50] <Anniepoo_> life is like an adiabatic process
[00:15:52] <Anniepoo_> 8cD
[00:16:01] <z64555> we're primarily concerned with the heat around the piston ring right now
[00:17:30] <Anniepoo_> thot it was a diaphram?
[00:17:50] * Anniepoo_ is having trouble following all this
[00:29:55] <z64555> Anniepoo_: it is a diaphram pump
[00:30:03] <z64555> it's pushed up and down by a piston
[00:30:11] <Anniepoo_> ah
[00:30:21] <z64555> the white metallic film inside the black plastic is the diaphram
[00:33:07] <Jak_o_Shadows> Hmm. Nobody here used the MSP430 did they?
[00:33:23] <Jak_o_Shadows> I THINK I can connect with mspdebug, but every time I try to write, it says 0 bytes transferred
[00:43:07] <ferdna> z64555, Anniepoo_ i gave up
[00:43:08] <ferdna> :(
[00:43:19] <ferdna> i did put pretoleum jelly...
[00:43:24] <ferdna> didnt work either
[00:43:32] <z64555> any change to its behavior?
[00:44:17] <Anniepoo_> sorry Jak
[00:44:31] <Anniepoo_> yah, ferd, that pump sounds like it was DOA
[00:46:30] <ferdna> z64555, none
[00:46:31] <ferdna> :(
[00:46:50] <ferdna> Anniepoo_, yes it was!
[00:47:00] <ferdna> i cut the cables before testing it...
[00:47:04] <ferdna> so now i have to keep it
[00:47:06] <ferdna> :(
[00:47:19] <ferdna> thats why i triexd to repaqir it
[00:47:43] <z64555> try runnning it at a lower voltage
[00:48:42] <z64555> If it is indeed friction that's causing the problem, there's a slow speed at which it'll run continous
[00:48:51] <ferdna> ohhh
[00:48:55] <z64555> but
[00:49:00] <z64555> If there's a blown coil in the motor
[00:49:04] <z64555> there wont
[00:49:16] <ferdna> let me try
[00:49:16] <ferdna> brb
[00:49:19] <ferdna> hahaha
[00:49:45] <z64555> the motor can still run with a blown coil, using momentum to roll past the commutators for that coil
[00:50:05] <z64555> but with a constant-ish load on it, it'll stick and stop working
[00:50:14] <Anniepoo_> any chance you have an oscilloscope?
[00:50:43] <Anniepoo_> if so, remove motor, disconnect from everything else, and spin it, it'll act like generator
[00:51:06] <Anniepoo_> if there's an obvious gap in the voltage, it's got a blown segement
[00:51:48] <ferdna> WFT!!!!!! it runs smooth at 2.5 volts
[00:51:51] <ferdna> Anniepoo_, yes i do
[00:51:51] <z64555> yes, that's probably more straightfoward
[00:52:16] <Anniepoo_> cool
[00:52:28] <Anniepoo_> do you have enough suction at tht speed?
[00:52:32] <z64555> ferdna: Ok, so friction is confirmed as a problem, let's test it with the oscilloscope
[00:53:36] <Anniepoo_> if you have a portable drill, use that to spin motor
[00:54:56] <ferdna> so i found the problem
[00:55:13] <ferdna> the motor stops working at 11.8v-12v
[00:55:26] <ferdna> if i run it at 11.5 or under it works as suppossed!!!!
[00:55:35] <ferdna> i was feeding 12 volts
[00:56:34] <Anniepoo_> bet it's a 6 volt or something
[00:56:44] <Anniepoo_> wonder how long it'll last
[00:56:49] <ferdna> Anniepoo_, i will try for sure that tomorrow
[00:57:17] <Anniepoo_> well, its' possble you just have a lower voltage pump
[00:57:35] <ferdna> Anniepoo_, is there anyway to know? i got ripped... you know ebay...
[00:57:52] <Anniepoo_> voltage ratings can be arbitrary
[00:57:55] <z64555> lower voltage pump... uh. don't think so
[00:58:06] <z64555> hm
[00:58:07] <z64555> although
[00:58:17] <z64555> 12v car batteries are not normally at 12v
[00:58:23] <z64555> they're usually a bit lower
[00:58:31] <ferdna> ohhh
[00:58:34] * z64555 thinks
[00:58:40] <Anniepoo_> so, I'd try rnning it for a while at a lower voltage
[00:58:48] <ferdna> what would be optimal voltage? i dont want to burn my motor
[00:59:08] <Anniepoo_> and then slowly bring up voltage until ou get enough sction to power your pickup
[00:59:28] <z64555> yeah
[00:59:28] <Anniepoo_> you can check the case temp of the motor.
[00:59:33] <Anniepoo_> and of the pump
[00:59:41] <z64555> it might be the magnets have gotten old, and lost a bit of their magnetism
[00:59:45] <ferdna> z64555, The actual resting voltage, or the voltage a battery will settle at 12-24 hours after being removed from the charger, is closer to 2.1 volts per cell, or about 6.4 volts for a 6v battery, and 12.7 volts for a 12v battery. These numbers assume 100% healthy cells, and may vary a bit lower for older batteries.
[00:59:52] <ferdna> google
[00:59:53] <Anniepoo_> basically, hang onto it, if it gets too hot to handle, it's not good
[01:00:22] <ferdna> cool
[01:00:27] <z64555> over-volting a motor will reduce its torque output at the exchange of higher speeds
[01:00:40] <ferdna> yeah
[01:00:50] * z64555 is just spitballing now
[01:01:22] <z64555> still, we've confirmed that it works at the lower voltage
[01:01:30] <ferdna> yes! so happy!
[01:01:43] <Anniepoo_> you might also have loosened it up a bit by just running and disassembling etc
[01:01:43] <ferdna> i am going to run it at 10volts
[01:02:03] <Anniepoo_> I'd run it a few minutes to make sure it'll not overheat
[01:02:09] <ferdna> yeah
[01:02:19] <Anniepoo_> it migh work harder with the pickup tube and pickup in place
[01:02:37] <ferdna> not really it will auto shutt off
[01:04:04] <ferdna> should i get another one:
[01:04:05] <ferdna> http://www.ebay.com/itm/Thomas-Gardner-Denver-014CDC20-12-E-Compressor-Vacuum-Pump-/231575894189?_trksid=p2141725.m3641.l6368
[01:04:07] <ferdna> :D
[01:04:09] <ferdna> :'(
[01:04:59] <z64555> noo
[01:05:09] <z64555> after this much trouble, I'd wait a bit
[01:05:16] <ferdna> hahaha i know
[01:12:46] <ferdna> i discovered something else...
[01:13:23] <ferdna> if i apply anything over 6 volts it wont turn on... but if i do it gradually it will go up to 12volts
[01:13:59] <z64555> ? That's backwards
[01:14:13] <ferdna> z64555, no...
[01:14:27] <z64555> That's backwards to normal motor behavior
[01:14:32] <Anniepoo_> no, its got enough stored in flywheel
[01:14:52] <ferdna> let say that i have my power supply at 7v... then connect my motor... it will fail...
[01:14:54] <Anniepoo_> and that pump's a nonlinear load
[01:15:01] <ferdna> ohhh
[01:20:30] <Anniepoo_> if you really want to overdo it, start the motor slow, read current and voltage, record them, turn it up and let it stabilize, record new values, etc.
[01:20:51] <Anniepoo_> you might want to plot I*E vs E
[01:21:00] <Anniepoo_> I*E being power
[01:27:24] <z64555> I forget where E shows up as a variable for voltage...
[01:27:39] <ferdna> too much
[01:27:42] <z64555> oh
[01:27:44] <z64555> Emf
[01:28:02] <z64555> "Electromotive Force"
[01:29:07] <Anniepoo_> sorry, physicist in a former life
[03:19:53] <winsoff> I really, really want to stop mopping the floor at my local pool
[03:20:10] <winsoff> I just need a brobot to mop for me
[03:22:39] <robopal> sarcasm?
[03:22:48] <winsoff> No, i'm serious
[03:23:11] <winsoff> A brobot could probably handle hotter water, and just sanitize with steam
[03:23:14] <robopal> robots will steal your job
[03:23:49] <winsoff> I would rather that job be stolen and let the humans enjoy the sanitary conditions
[03:24:29] <robopal> write an article about it on slashdot or reddit
[03:25:00] <robopal> lets see what others think
[03:25:07] <winsoff> heh
[03:25:11] <robopal> :P
[03:25:11] <winsoff> I'd rather just build the robot first
[03:25:20] <winsoff> but i have literally no idea how ;-;
[03:25:46] <winsoff> Other than "buy an old model on ebay, tear it apart, and clone it"
[07:52:32] <ace4016> top-down design :P
[07:52:51] <ace4016> and stealing the work of others (because that's how progress is made)
[08:52:29] <deshipu> progress is made with top-down design?
[08:54:01] <ace4016> no, stealing the work of others :P
[08:54:20] <ace4016> otherwise we'd be stuck reinventing the wheel
[08:54:25] <ace4016> literally
[08:54:54] * Tom_L gives ace4016 a square block
[08:57:27] <ace4016> :D
[08:57:30] <Tom_L> https://s-media-cache-ak0.pinimg.com/564x/a5/fb/a0/a5fba061c0f3abf564991b645fa28baf.jpg
[09:00:00] <deshipu> ace4016: I think you have been brainwashed by the media as to what "stealing" actually is
[09:00:38] <ace4016> i'm being facetious
[09:01:24] <deshipu> that's not a good way to make progress
[09:01:55] <Tom_L> sitting on irc isn't either
[09:08:53] <deshipu> I don't know, it's been great for getting ideas and solutions to roadblocks in my projects
[09:09:01] <deshipu> for the past 10 years
[09:09:06] <deshipu> not *this* channel, of course
[09:12:05] <veverak> :D
[09:13:55] <Tom_L> i also was being facetious, i've been here for ~25
[09:22:51] <robopal> so
[09:23:06] <robopal> what new toy did you get this christmas?
[09:34:25] <robopal> nothing
[09:36:14] <SpeedEvil> A power-file.
[09:37:29] <robopal> there are power files?
[09:38:13] <robopal> oh I see
[09:38:15] <SpeedEvil> https://www.amazon.co.uk/gp/product/B000XSP72K/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1
[10:35:41] <z64555> its a... hand-held belt sander??
[10:36:48] <z64555> huh.
[11:18:20] <ace4016> i gots a table saw and circular saw for xmas! :D
[11:21:16] <robopal> why both?
[11:22:13] <robopal> well ok
[11:26:34] <Anniepoo_> I sorta gave myself the brumlowbot
[11:27:07] <Anniepoo_> and a new sewing machine
[13:26:02] <SpeedEvil> z64555: yes - works well for cleaning out some sorts of joint, and doing moderately intricate machining of edges
[15:03:36] <tsglove> SpeedEvil, that looks handy.
[15:11:04] <rue_house> whats really interesting about simulating capacitors is that it dosn't matter if they are charging or discharging, the formula is the same
[15:11:34] <rue_house> you just inject different amounts of charge/time
[15:17:25] <rue_house> I think this is the same formula as the running average
[15:17:26] <rue_house> damn...
[15:18:08] <rue_house> so, rpm measurement
[15:19:26] <rue_house> I have an edge interrupt that adds 65535/10)/maxRPMfactor to the accumulator,
[15:19:43] <rue_house> and on some regular time base, I multiply it by 90%
[15:20:10] <rue_house> and I'll get a linear number prop. to the rpm
[15:21:00] <rue_house> BUT it means I have to put floating point on the avr doing it, I thikn
[15:22:44] <rue_house> I had, once upon a time a program that told you how to do int. division by fixed values
[15:25:06] <z64555> yeah, don't do floating point arithmetic on chips without a FPU
[15:25:08] <Anniepoo_> multiply top and bottom by n
[15:25:16] <Anniepoo_> usually n is a power of 2
[15:25:18] <Anniepoo_> 8cD
[15:25:28] <z64555> Anniepoo_: uh, that's a multiply by 1
[15:25:41] <Anniepoo_> yes it is
[15:26:07] <Anniepoo_> say I want to divide 11.72 by 3.65
[15:26:23] <Anniepoo_> instead I divide 1172 by 365
[15:26:39] <Anniepoo_> 8cD
[15:27:00] <z64555> well, yeah
[15:27:18] <z64555> that makes your base in 100th's
[15:27:23] <Anniepoo_> yup
[15:27:34] <Anniepoo_> 8cD and avoids floating point
[15:27:38] <z64555> but that is an interesting idea, have each value a pair of ints, the mantessa and the base
[15:28:01] <Anniepoo_> you don't need to carry around the exponent
[15:28:06] <Anniepoo_> you can just make it fixed
[15:28:39] <Anniepoo_> this used to be standard.
[15:28:39] <z64555> I think most fixed point implementations do that, have a global base
[15:28:56] <Anniepoo_> yes, this is fixed point
[15:29:10] <z64555> floating point has made everyone lazy :D
[15:29:12] <Anniepoo_> you're just assuming the radix point is at some location
[15:29:28] <Anniepoo_> yup
[15:29:41] <Anniepoo_> I wrote a big chunk of a CAD system using this
[15:29:46] <rue_house> there is a program I wrote a LONG time ago, that gives you a shift-subtract sequence for fixed division
[15:29:48] <rue_house> cant FIND it
[15:29:58] <Anniepoo_> (the whole thing used fixed point, but I only wrote part of the CAD system, of course)
[15:30:28] <Anniepoo_> the shift subtract todivide algorithm is straightforward.
[15:30:52] <rue_house> ok whats the sequence for multiplying by 0.9 ?
[15:31:19] <Anniepoo_> does you processor have int divide?
[15:31:49] <Anniepoo_> and to what accuracy?
[15:32:15] <rue_house> tiny13
[15:32:21] <Anniepoo_> and how big can the cofactor be, and how wide a word
[15:32:28] <rue_house> I need to multiply a 16 bit by 0.9
[15:32:45] <z64555> division is multiply value, then divide by radix? It's been awhile
[15:32:51] <Anniepoo_> do you actually need all 16 bits range?
[15:33:04] <Anniepoo_> no, division is the inverse operation of multiplication
[15:33:07] <rue_house> yea
[15:33:15] <Anniepoo_> you do?
[15:33:49] <rue_house> I think I do
[15:34:07] <Anniepoo_> look and see if tiny13 has division
[15:34:14] <Anniepoo_> and/or multiply
[15:34:14] <rue_house> I have a program, it asks what you want to mult/divide by and gives you the shift/add / subtract seequence
[15:34:19] <rue_house> I cant FIND it!!!!
[15:34:36] <rue_house> I think it was done a REALLY long time ago
[15:34:43] <orlock> Happy new years!
[15:34:45] <Anniepoo_> Some implementations of the
[15:34:45] <Anniepoo_> architecture also provide a powerful multiplier supporting both signed/unsigned multiplication
[15:34:46] <Anniepoo_> and fractional format. See the “Instruction Set” section for a detailed description.
[15:34:48] * orlock is back at his desk
[15:34:49] <rue_house> like, back in my 386 asm days
[15:34:53] <Anniepoo_> from the atmel docs
[15:35:06] <rue_house> its fixed, you just shift and subtract/add
[15:35:21] <z64555> rue_house: didn't you show this off like, a few days ago?
[15:35:40] <Anniepoo_> well, if the instruction set includes multiply and divide
[15:35:43] <z64555> oh, no, that was the resistor thing
[15:35:49] <Anniepoo_> it's much faster to do it that way
[15:35:54] <rue_house> no, you just shift and add
[15:36:12] <Anniepoo_> the shift and add is a lot of instructions, much much slower
[15:36:36] <Anniepoo_> but you need to know wheher your chip implements it
[15:36:37] <z64555> some architectures shift in one step
[15:36:55] <z64555> others do a single bit op per distance
[15:37:20] <Anniepoo_> oh good grief
[15:37:55] <z64555> Whats up, Charlie Brown?
[15:38:13] <rue_house> this is going to drive me insame!!!
[15:38:21] <z64555> well
[15:38:25] <z64555> more than usual :D
[15:38:43] <rue_house> http://homepage.divms.uiowa.edu/~jones/bcd/divide.html
[15:38:44] <Anniepoo_> what language?
[15:38:52] <rue_house> I have a program that tells me!
[15:39:04] <Anniepoo_> that tells you what language you're in?
[15:39:04] <rue_house> I think i wrote it in basic, but I cant find it
[15:39:23] <Anniepoo_> NO, wat language are you writing the modern code in?
[15:39:44] <rue_house> damn tobbors logs in my way
[15:39:44] <Anniepoo_> uh, anything with shifts and adds is going to be slooooow
[15:39:53] <rue_house> I'm writing it in C but it dosn't matter
[15:40:02] <Anniepoo_> tell tobbor to roll over
[15:40:02] <rue_house> 0.9 is prolly just 4 shift/adds
[15:40:18] <Anniepoo_> if it's in C then I bet
[15:40:18] <rue_house> its faster than floating point on a tiny13
[15:40:41] <rue_house> besiees, I dont even know if the floating point library FITS on a tiny13
[15:40:59] <Anniepoo_> x = int(A)* 9 / 10 is faster than anything else you can do
[15:41:22] <Anniepoo_> or, if yu need more precision
[15:41:37] <Anniepoo_> x = int(A) * 900 / 1000
[15:41:49] <Anniepoo_> but you're eating into your range
[15:42:01] <Anniepoo_> 8cD always an isue with fixed point
[15:42:27] <rue_house> it'll blow 16 bits
[15:43:58] <z64555> Then work in a bigger register
[15:45:06] <Anniepoo_> yup
[15:45:14] <Anniepoo_> you'll have to piece it
[15:45:44] <rue_house> its something like
[15:46:06] <rue_house> 1/2 is less than 0.9, so you do that
[15:46:32] <rue_house> 1/2+1/4 is still less so you do that
[15:46:57] <rue_house> and 1.8
[15:46:59] <rue_house> 1/8
[15:47:47] <Anniepoo_> look up 'long division'
[15:47:54] <rue_house> no
[15:47:57] <rue_house> this aARG
[15:48:04] <rue_house> ARG i HATE DOING THINGS TWICE
[15:48:13] <rue_house> I HAVE THIS CODE SOMEWHERE
[15:48:21] * Anniepoo_ . o O ( I'm with people who didn't grow up calculating by hand )
[15:49:12] <rue_house> 1/16 is too much
[15:49:22] <rue_house> so is 1/32
[15:49:32] <rue_house> 64 isn't we do that
[15:49:44] <rue_house> and /128
[15:49:58] <rue_house> 256 is too much
[15:50:11] <rue_house> 512 is a bit too much
[15:51:23] <z64555> hey, I did long division by hand
[15:51:24] <rue_house> calc "(1/2)+(1/4)+(1/8)+(1/64)+(1/128)+(1/1024)+(1/2048)+(1/16384)+(1/32768)"
[15:51:24] <rue_house> (1/2)+(1/4)+(1/8)+(1/64)+(1/128)+(1/1024)+(1/2048)+(1/16384)+(1/32768) -->> 0.899995
[15:51:38] <rue_house> 32768 is my last of the 16 bits
[15:51:55] <rue_house> now, how do I use that
[15:52:26] <z64555> basically cant, since you just said that anything about 1/64 is too much
[15:52:53] <z64555> *above
[15:53:36] <rue_house> i >>= 1; o = i; // i/2
[15:53:44] <rue_house> i >>= 1; o += i; // i/4
[15:53:52] <rue_house> i >>= 1; o += i; // i/8
[15:54:08] <rue_house> i >>= 3; o += i; // i/64
[15:54:13] <rue_house> i >>= 1; o += i; // i/128
[15:54:27] <rue_house> i >>= 3; o += i; // i/1024
[15:54:33] <rue_house> i >>= 1; o += i; // i/2048
[15:55:04] <rue_house> i >>= 3; o += i; // i/16384
[15:55:08] <rue_house> i >>= 1; o += i; // i/32768
[15:55:15] <rue_house> -- done, is that right!?!?!
[15:59:21] <z64555> sigh
[16:01:51] <rue_house> wait amin, I used this in my PIC days, maybe this isn't on this server
[16:05:12] <rue_house> dec 24 2004
[16:06:57] <rue_house> Tom_L, your logs dont to back to 2004 do they?
[17:10:01] <rue_house> guess I could also use a 1Mbit eeprom with a LUT
[18:24:03] <lonecrow> Heya Rue More
[18:26:41] <rue_shop3> oh hey
[18:26:46] <rue_shop3> my meeting just canceled
[18:26:54] <rue_shop3> what time do normal people have supper?
[18:28:47] <lonecrow> meet us at golden city at 6pm ok. that is across the street from the Bayviewbin Sechelt.
[18:29:23] <rue_house> eek, low on gas
[18:29:48] <rue_house> I wonder if the gas station here is open
[18:30:03] <lonecrow> txt me if you run out and I will drive you and your jerry can to the gas station.
[18:30:15] <lonecrow> where are you?
[18:30:36] <rue_house> home
[18:32:17] <lonecrow> ok...see you at 6pm..we are over due for a visit :)
[18:32:50] <rue_house> oh, you come here? that would work
[18:33:00] <rue_house> oh, wonder if the truck would even start
[18:33:10] <rue_house> charger is already busy on the work van
[18:33:11] <rue_house> hmm
[18:33:30] <rue_house> shy isn't my multiply alg comming out right
[18:33:30] <lonecrow> lol trying to treat you to a nice dinner and human company
[18:35:29] <lonecrow> look...your coming to dinner. see you at 6pm at Golden City. choice is a burden, allow me to unburden you
[18:35:45] <rue_house> hah
[18:35:51] <rue_house> better see if the truck starts
[18:36:02] <rue_house> WHY DOESN'T THIS MULTIPLY WORK!
[18:36:05] <orlock> how very devo
[18:36:43] <lonecrow> if truck doesn't start I will pick you up.
[18:37:16] <lonecrow> i also need to find a machine learning channel...playing with tensorflow
[18:37:45] <rue_shop3> 8-| that was close
[18:40:08] <rue_shop3> its not the first today....
[18:40:15] <rue_shop3> no its the first work day AFTER the first
[18:40:17] <rue_shop3> ..ah
[18:40:24] <rue_shop3> so naturally
[18:40:27] <rue_shop3> yea its a holiday
[18:45:27] <rue_house> printer printing, boiler boiling, charger charging, dryer,...... dryer.....
[18:47:21] <rue_house> drying,
[18:47:38] <rue_house> I need an ai that can operate a robot arm to distinguish a sock
[18:48:01] <rue_house> it has 8 hours to find and orient a sock
[18:48:22] <rue_house> I think I did this alg wrong
[18:48:36] <rue_house> truck is running, I need gas
[18:48:51] <rue_house> I think I'm supposed to subtract after bits that make the multiplier too big
[19:25:41] <rue_shop3> I'V GOT GAS!!!!
[19:25:51] <rue_shop3> and, the truck is fueled back up
[19:26:00] <lonecrow_> Excellent
[19:28:39] <rue_shop3> easy to say when your standing over there
[19:46:06] <rue_house> there was a trick to this method, you had to do something to the answer somewhere
[19:59:00] <rue_house> this should be comming out within 0.5
[19:59:46] <rue_house> where did I use this...
[20:00:00] <rue_house> I wonder if it was in servo loop code
[20:20:04] <rue_house> I REALLY HATE IT WHEN SOMETING i DID JUST VANISHES FROM EXITANCE
[20:20:31] <rue_house> wasted a whole freaking day on trying to multiply numbers, I'v done this before I should be abel to just bring it up
[20:23:08] <rue_house> AHA!
[20:23:30] <rue_house> constdiv
[20:23:37] <rue_house> 2003
[20:24:11] <rue_house> ./a.out
[20:24:11] <rue_house> Number to divide by? 10
[20:24:11] <rue_house> precision? 16
[20:24:11] <rue_house> Shift dividend right. Shift#1
[20:24:11] <rue_house> Shift dividend right. Shift#2
[20:24:13] <rue_house> Shift dividend right. Shift#3
[20:24:15] <rue_house> Add dividend to accumulator (dividend /8.000000)
[20:24:16] <rue_house> Shift dividend right. Shift#4
[20:24:18] <rue_house> ...
[20:36:21] <rue_house> i >>= 1; o = i; // i/2
[20:36:21] <rue_house> i >>= 1; o += i; // i/4
[20:36:21] <rue_house> i >>= 1; o += i; // i/8
[20:36:21] <rue_house> i >>= 1; o += i; // i/16
[20:36:21] <rue_house> i >>= 1; o -= i; // i/32
[20:36:22] <rue_house> i >>= 1; o -= i; // i/64
[20:36:24] <rue_house> i >>= 1; o += i; // i/128
[20:36:26] <rue_house> i >>= 1; o += i; // i/256
[20:36:28] <rue_house> i >>= 1; o -= i; // i/512
[20:36:30] <rue_house> i >>= 1; o -= i; // i/1024
[20:36:32] <rue_house> i >>= 1; o += i; // i/2048
[20:36:34] <rue_house> i >>= 1; o += i; // i/4096
[20:36:36] <rue_house> i >>= 1; o -= i; // i/8192
[20:36:38] <rue_house> i >>= 1; o -= i; // i/16384
[20:36:40] <rue_house> i >>= 1; o += i; // i/32768
[20:36:42] <rue_house> CLOSE ENOUGH