654 karma · joined September 1, 2013
In real life, numbers are often of human scale (rather than the kind you get from reducing a hard SAT instance to knapsack) and a pseudopolynomial algorithm is great.
I'm pretty sure the authors really want to prevent competing implementations that make money for someone else, and the wording expresses their intent. I believe that copyright on the document won't let them stop a company that can afford decent lawyers from implementing the spec, but it certainly doesn't make me any more likely to touch anything related.
Lawyer repellent (I hope): The quote comes from https://github.com/mongodb/docs/commit/50e48200cde7e2eaffdc6... , and anyone who receives this comment may copy it as they like.
C and D are plain log scales, where one decade is the length of the rule. They're sort of the default scales to use.
Multiplication is commutative, so you put either number on either scale. The important thing is that the distance from the left index of the scale is proportional to the log of the number (reading the scale as 1 to 10), so you want to arrange the scales to add the lengths corresponding to your numbers such that the lengths add up. (Or so that you subtract the length of the divisor from the dividend, if you're dividing).
You can get by without the approximation if you're willing to set up the multiplication, see that the product is out there in thin air, then move the slide to put the right index where you originally put the left index. (3 times 5: on the d scale find 3 and put the left index of the C scale there; opposite 5 on the C scale read nothing because there's no D scale there; try again using the right index of the C scale, which is the same thing as having another copy of the D scale out there to the right where the air was).
A and B are each 2 copies of a log scale. You can absolutely use the left side of A and B for your numbers to multiply, and the product will always be on the scale.
People normally use(d?) C and D because the precision is better and because the rest of the scales (like the trig and log-log) are constructed to work with them.
Some people live far enough from Alabama that it's inconvenient to visit the store every couple of days to check.
The identifiers actually used over the air are the IMSI (normally written once at the SIM factory and never changed, used as a fallback if no other identity is available), the TMSI (assigned by the core network when the user attaches, can be reassigned at every attach, service request (return from idle to active state), or mobility event that the core knows about), and RNTI (assigned by each cell, changes at each handover, used to address each downlink transmission to the mobile and I think included in the CRC in each uplink transmission from the mobile).
If you just receive a random transmission off the air, you can get the RNTI; if you receive an initial signaling message to the core network you'll get the current TMSI if assigned; you'll see the IMSI only in case of a new SIM or a SIM where the core network has forgotten who it assigned that TMSI to.
There are also some temporary identifiers between the cell and the core network allocated when the cell starts talking to a mobile and released when the mobile goes idle, but these never reach the mobile.
The core knows the IMSI and optionally IMEI of everyone connected. In normal operation, each cell only knows some temporary identifiers (it has the opportunity to record IMSI if the mobile sends it, but the mobile doesn't normally do that).
All the details are available from 3gpp.org, and I can be more specific about which section of which doc if anyone actually cares.
Perhaps something like "Please follow the safety rules. If you don't follow them and you hurt yourself, you won't get a huge payday, just bad injuries that your brought on yourself"?
I learned Zilog first and agree with you. I had to keep an 8080 manual handy for a while to make any sense out of that compiler output.
Good(?) times.
You would need a linker script to collect the callbacks into a section and provide a symbol for the end, and define variables something like
int (my_sort_callback_ptr)(void , void *) __attribute__((section, "sort_callbacks"))=my_sort_comparator;
You would, of course, use a macro for that.
There might have also been some steganographic images, but I know for sure I saw several of the image+archive kind around then.
You can get in trouble if the welder expects a safety ground or neutral intended to carry current that you don't have (neither is safe substitute for the other). You can get in trouble if you connect the welder to a circuit that can deliver more current than it's designed for and something fails (it was designed to fail safely assuming that the circuit is limited to X amps by a fuse or breaker).
If the dryer outlet has all the wires the welder wants (and some extra) and the same current rating, an adapter that connects the desired wires and ignore the rest should be safe as long as it's made from big enough wire.
If you said memset(&p, 0, sizeof(p)) then that's not guaranteed to work on all implementations.