The LGP-30 , standing for Librascope General Purpose and then Librascope General Precision , is an early off-the-shelf computer. It was manufactured by the Librascope company of Glendale, California (a division of General Precision Inc. ), and sold and serviced by the Royal Precision Electronic Computer Company, a joint venture with the Royal McBee division of the Royal Typewriter Company . The LGP-30 was first manufactured in 1956, at a retail price of $ 47,000, equivalent to $ 530,000 in 2023.
91-459: The LGP-30 was commonly referred to as a desk computer. Its height, width, and depth, excluding the typewriter shelf, was 33 by 44 by 26 inches (84 by 112 by 66 cm). It weighed about 800 pounds (360 kg), and was mounted on sturdy casters which facilitated moving the unit. The primary design consultant for the Librascope computer was Stan Frankel , a Manhattan Project veteran and one of
182-510: A for statement, no nested switch declarations (nested calls are permitted), and no boolean variables and operators. As in ACT-III, every token had to be separated by an apostrophe. DICTATOR is a painful acronym for D ODCO I nterpretive C ode for T hree A ddress with T echnical O ptimum R ange. DICTATOR, introduced in 1959, is an interpreter designed to hide the LGP-30 machine details from
273-511: A bit-serial architecture and multiple use of each of the 15 flip-flops. It was a binary , 31-bit word computer with a 4096- word drum memory . Standard inputs were the Flexowriter keyboard and paper tape (ten six-bit characters/second). The standard output was the Flexowriter printer ( typewriter , working at 10 characters/second). An optional higher-speed paper tape reader and punch
364-547: A "restoration of magnetic flux in the head" at the 32nd bit time. Since there was only one address per instruction, a method was needed to optimize allocation of operands . Otherwise, each instruction would wait a complete drum (or disk) revolution each time a data reference was made. The LGP-30 provided for operand -location optimization by interleaving the logical addresses on the drum so that two adjacent addresses (e.g., 00 and 01) were separated by nine physical locations. These spaces allowed for operands to be located next to
455-405: A /10 , such as 1/100 or 37/1000, can be exactly represented in fixed point with a power-of-ten scaling factor 1/10 with any n ≥ m . This decimal format can also represent any binary fraction a /2 , such as 1/8 (0.125) or 17/32 (0.53125). More generally, a rational number a / b , with a and b relatively prime and b positive, can be exactly represented in binary fixed point only if b
546-402: A 31-bit word though about half the bits are unused and set to zero. An instruction consists of an "order" such as the letter b for "bring from memory" and an address part such as the number 2000 to designate a memory location. All instructions have a similar appearance in an LGP-30 word. The order bits occupy positions 12 through 15 of the word and the address bits occupy positions 18 through 29 of
637-411: A fixed number of digits of their fractional part. Dollar amounts, for example, are often stored with exactly two fractional digits, representing the cents (1/100 of dollar). More generally, the term may refer to representing fractional values as integer multiples of some fixed small unit, e.g. a fractional amount of hours as an integer multiple of ten-minute intervals. Fixed-point number representation
728-549: A fixed-point representation can have error less than 1.2 × 10 , whereas the standard floating-point representation may have error up to 596 × 10 — because 9 of the bits are wasted with the sign and exponent of the dynamic scaling factor. Specifically, comparing 32-bit fixed-point to floating-point audio, a recording requiring less than 40 dB of headroom has a higher signal-to-noise ratio using 32-bit fixed. Programs using fixed-point computations are usually more portable than those using floating-point, since they do not depend on
819-407: A fractional amount of hours may be represented as an integer number of seconds; that is, as a fixed-point number with scale factor of 1/3600. Even with the most careful rounding, fixed-point values represented with a scaling factor S may have an error of up to ±0.5 in the stored integer, that is, ±0.5 S in the value. Therefore, smaller scaling factors generally produce more accurate results. On
910-422: A larger wheel surface area. Also, harder wheel materials (e.g., cast iron, high profile polyurethane) are less sensitive to and tend to not track dirt and debris on floors. Common inexpensive casters may include a brake feature, which prevents the wheel from turning. This is commonly achieved using a lever that presses a brake cam against the wheel. However a swivel caster is still able to move around slightly, in
1001-496: A multiply instruction that includes renormalization—the scaling conversion of the product from 2 n −2 to n −1 fraction bits. If the CPU does not provide that feature, the programmer must save the product in a large enough register or temporary variable, and code the renormalization explicitly. Overflow happens when the result of an arithmetic operation is too large to be stored in the designated destination area. In addition and subtraction,
SECTION 10
#17328553628631092-414: A rhythm was developed: The operator then removed the bootstrap tape, snapped in the tape containing the regular loader, carefully arranging it so it would not jam, and pressed a few more buttons to start up the bootstrap program. Once the regular loader was in, the computer was ready to read in a program tape. The regular loader read a more compact format tape than the bootstrap loader. Each block began with
1183-409: A rigid ring encircling each swivel caster, slightly above the wheel, that lowers and presses down on the wheel, preventing both wheel and swivel rotation. An alternative method is the central lock caster, which has a rotating cam in the center of each vertical caster shaft, leading down to a braking mechanism in the bottom of each caster. A Kingpinless caster has an inner raceway, an outer raceway which
1274-408: A role in how well the caster performs. Parameters such as tire hardness, tread width and shape, the length of the trailing offset (the 'caster') and wheel diameter all affect the effort required to start the platform moving. Harder wheels will make the caster easier to roll by reducing deformation resistance. A less inflated tire offers more deformation resistance and thus more effort is required to move
1365-464: A second (+1) address to locate the next instruction, each of which would have increased program performance. None of these features were implemented in the LGP-30, but some were realized in its 1960 successor, the RPC-4000. A unique feature of the LGP-30 was its built-in multiplication, despite being an inexpensive computer. Since this was a drum computer, bits were processed serially as they were read from
1456-428: A signed integer in two's complement representation with an implicit scaling factor as above. The sign of the value will always be indicated by the first stored bit (1 = negative, 0 = non-negative), even if the number of fraction bits is greater than or equal to the total number of bits. For example, the 8-bit signed binary integer (11110101) 2 = −11, taken with -3, +5, and +12 implied fraction bits, would represent
1547-448: A small oscilloscope on the front panel that displayed the output from the three register read heads, one above the other, allowing the operator to see and read the bits. Horizontal and vertical size controls let the operator adjust the display to match a plastic overlay engraved with the bit numbers. To read bits the operator counted the up- and down-transitions of the oscilloscope trace. Unlike other computers of its day, internal data
1638-405: A small circle rotating around offset distance between the vertical shaft and the center of the locked wheel. A more complex type of swivel caster, sometimes called a total lock caster, has an additional rotational lock on the vertical shaft so that neither shaft swiveling nor wheel rotation can occur, thus providing very rigid support. It is possible to use these two locks together or separately. If
1729-468: A starting address so the tape could be rewound and retried if an error occurred. If any mistakes were made in the process, or if the program crashed and damaged the loader program, the process had to be restarted from the beginning. In 1963, Librascope produced a transistorized update to the LGP-30 named the LGP-21. The new computer had about 460 transistors and about 375 diodes. It cost only $ 16,250, one-third
1820-536: A straight line path, or mounted on a pivot or pintle such that the wheel will automatically align itself to the direction of travel. A basic, rigid caster consists of a wheel mounted to a stationary fork. The orientation of the fork, which is fixed relative to the vehicle, is determined when the caster is mounted to the vehicle. An example of this is the wheels found at the rear of a shopping cart in North America. Rigid casters tend to restrict vehicle motion so that
1911-411: A swivel caster will tend to automatically align to, and rotate parallel to the direction of travel. This can be seen on a shopping cart when the front casters align parallel to the rear casters when traveling down an aisle. A consequence of this is that the vehicle naturally tends to travel in a straight direction. Precise steering is not required because the casters tend to maintain straight motion. This
SECTION 20
#17328553628632002-509: A swivel or rigid caster design. Industrial casters typically have a flat top plate that has four bolt holes to ensure a sturdy connection between the top plate and the load. They are used in a variety of applications including dolly carts, assembly turntables, heavy duty storage racks, holding bins, tow lines, maintenance equipment, and material handling mechanisms. In early manufacturing, industrial caster bodies were typically fabricated from three separate, stamped metal parts, which were welded to
2093-407: A variable or formula may not appear explicitly in the program. Good programming practice then requires that it be provided in the documentation , at least as a comment in the source code . For greater efficiency, scaling factors are often chosen to be powers (positive or negative) of the base b used to represent the integers internally. However, often the best scaling factor is dictated by
2184-423: A wide swivel caster in-place, the center part of the wheel-to-ground contact patch rotates slower than the regions further out to the sides. This difference in rotation speed across the base of the wheel contact patch causes wide wheels to resist rotation around the swivel, and this resistance increases as weight loading increases. An alternative way to increase load capacity while limiting swivel-rotation resistance
2275-423: Is 22×32/100 = 7.04. If the result is not exact, the error introduced by the rounding can be reduced or even eliminated by converting the dividend to a smaller scaling factor. For example, if r = 1.23 is represented as 123 with scaling 1/100, and s = 6.25 is represented as 6250 with scaling 1/1000, then simple division of the integers yields 123÷6250 = 0 (rounded) with scaling factor (1/100)/(1/1000) = 10. If r
2366-488: Is a fixed-point environment having each array (block) of fixed-point data be scaled with a common exponent in a single word. A common use of decimal fixed-point is for storing monetary values, for which the complicated rounding rules of floating-point numbers are often a liability. For example, the open-source money management application GnuCash , written in C, switched from floating-point to fixed-point as of version 1.6, for this reason. Binary fixed-point (binary scaling)
2457-421: Is a power of 2; and in decimal fixed point only if b has no prime factors other than 2 and/or 5. Fixed-point computations can be faster and/or use less hardware than floating-point ones. If the range of the values to be represented is known in advance and is sufficiently limited, fixed point can make better use of the available bits. For example, if 32 bits are available to represent a number between 0 and 1,
2548-569: Is also true during vehicle turns. The caster rotates perpendicular to the turning radius and provides a smooth turn. This can be seen on a shopping cart as the front wheels rotate at different velocities, with different turning radius depending on how tight a turn is made. The angle of, and distance between the wheel axles and swivel joint can be adjusted for different types of caster performance. Industrial casters are heavy duty casters that are designed to carry heavy loads, in some cases up to thirty thousand pounds. An Industrial caster may have either
2639-481: Is attached to the vehicle, and ball bearings between the raceways. This mechanism has no kingpin , hence the name kingpinless. The absence of a kingpin eliminates most causes of swivel caster failure and reduces or eliminates shimmy after use . They offer capacity and durability comparable to units having sealed precision ball or tapered bearings , and are a practical alternative to traditional swivel casters in high-impact situations . One major disadvantage of casters
2730-437: Is first converted to 1,230,000 with scaling factor 1/1000000, the result will be 1,230,000÷6250 = 197 (rounded) with scale factor 1/1000 (0.197). The exact value 1.23/6.25 is 0.1968. In fixed-point computing it is often necessary to convert a value to a different scaling factor. This operation is necessary, for example: To convert a number from a fixed point type with scaling factor R to another type with scaling factor S ,
2821-442: Is flutter. A common example of caster flutter is on a supermarket shopping cart, when one caster rapidly swings side-to-side. This oscillation, which is also known as shimmy , occurs naturally at certain speeds, and is similar to speed wobble that occurs in other wheeled vehicles. The speed at which caster flutter occurs is based on the weight borne by the caster and the distance between the wheel axle and steering axis. This distance
LGP-30 - Misplaced Pages Continue
2912-409: Is known as trailing distance , and increasing this distance can eliminate flutter at moderate speeds. Generally, flutter occurs at high speeds. What makes flutter dangerous is that it can cause a vehicle to suddenly move in an unwanted direction. Flutter occurs when the caster is not in full contact with the ground and therefore its orientation is uncontrollable. As the caster regains full contact with
3003-406: Is more natural for the problem. Examples of the latter are accounting of dollar amounts, when fractions of cents must be rounded to whole cents in strictly prescribed ways; and the evaluation of functions by table lookup , or any application where rational numbers need to be represented without rounding errors (which fixed-point does but floating-point cannot). Fixed-point representation is still
3094-608: Is no separation, and the distinction between the two groups of digits is defined only by the programs that handle such numbers. Fixed-point representation was the norm in mechanical calculators . Since most modern processors have fast floating-point unit (FPU), fixed-point representations in processor-based implementations are now used only in special situations, such as in low-cost embedded microprocessors and microcontrollers ; in applications that demand high speed or low power consumption or small chip area, like image , video , and digital signal processing ; or when their use
3185-437: Is often contrasted to the more complicated and computationally demanding floating-point representation . In the fixed-point representation, the fraction is often expressed in the same number base as the integer part, but using negative powers of the base b . The most common variants are decimal (base 10) and binary (base 2). The latter is commonly known also as binary scaling . Thus, if n fraction digits are stored,
3276-408: Is possible by adding a 'rounding addend' of half of the scaling factor before shifting; The proof: round(x/y) = floor(x/y + 0.5) = floor((x + y/2)/y) = shift-of-n(x + 2^(n-1)) A similar method is usable in any scaling. To divide two fixed-point numbers, one takes the integer quotient of their underlying integers, and assumes that the scaling factor is the quotient of their scaling factors. In general,
3367-406: Is to use multiple narrow wheels in tandem on the same wheel axis. Each wheel has a comparatively narrower ground contact patch than a single wide wheel, so there is less resistance to turning in place on the swivel. There are four main classifications of wheels: Fixed-point arithmetic In computing , fixed-point is a method of representing fractional (non-integer) numbers by storing
3458-546: The discrete cosine transform algorithms used to compress JPEG images. Electronic instruments such as electricity meters and digital clocks often use polynomials to compensate for introduced errors, e.g. from temperature or power supply voltage. The coefficients are produced by polynomial regression . Binary fixed-point polynomials can utilize more bits of precision than floating-point, and do so in fast code using inexpensive CPUs. Accuracy, crucial for instruments, compares well to equivalent-bit floating-point calculations, if
3549-499: The LGP-30 in his attempt to model changing weather patterns. His discovery that massive differences in forecast could derive from tiny differences in initial data led to him coining the terms strange attractor and butterfly effect , core concepts in chaos theory . The RPC-4000 (successor to the LGP-30) is also remembered as the computer on which Mel Kaye performed a legendary programming task in machine code , retold by Ed Nather in
3640-443: The LGP-30. Dartmouth ALGOL 30 was a three-pass system (compiler, loader, and interpreter) that provided almost all features of ALGOL except those requiring run-time storage allocation. SCALP, a Self Contained Algol Processor, was a one-pass system for a small subset of ALGOL (no blocks other than the entire program), no procedure declarations, conditional statements but no conditional expressions, no constructs other than while in
3731-449: The accuracy δ = S /2 of values that could be represented in 16-bit signed binary fixed point format, depending on the number f of implied fraction bits. Fixed-point formats with scaling factors of the form 2 -1 (namely 1, 3, 7, 15, 31, etc.) have been said to be appropriate for image processing and other digital signal processing tasks. They are supposed to provide more consistent conversions between fixed- and floating-point values than
LGP-30 - Misplaced Pages Continue
3822-488: The application. Thus one often uses scaling factors that are powers of 10 (e.g. 1/100 for dollar values), for human convenience, even when the integers are represented internally in binary. Decimal scaling factors also mesh well with the metric (SI) system , since the choice of the fixed-point scaling factor is often equivalent to the choice of a unit of measure (like centimeters or microns instead of meters ). However, other scaling factors may be used occasionally, e.g.
3913-500: The attached platform. Turning effort is affected by the amount of caster and by the wheel diameter. Enhancements to traditional caster design include toe guards, track wipers, reinforced legs, steering tubes, swivel locks and brakes, all implemented in an effort to reduce operator injuries in the workplace. The diameter of a caster wheel affects how easily the caster moves over particulate, rough or irregular surfaces. Large diameter caster wheels are able to bridge gaps like that between
4004-628: The availability of an FPU. This advantage was particularly strong before the IEEE Floating Point Standard was widely adopted, when floating-point computations with the same data would yield different results depending on the manufacturer, and often on the computer model. Many embedded processors lack an FPU, because integer arithmetic units require substantially fewer logic gates and consume much smaller chip area than an FPU; and software emulation of floating-point on low-speed devices would be too slow for most applications. CPU chips for
4095-427: The base b ; whereas their absolute resolution varies by many orders of magnitude, like the values themselves. In many cases, the rounding and truncation errors of fixed-point computations are easier to analyze than those of the equivalent floating-point computations. Applying linearization techniques to truncation, such as dithering and/or noise shaping is more straight-forward within fixed-point arithmetic. On
4186-408: The caster wheel. When the caster is moved and the wheel is not facing the correct direction, the offset will cause the wheel assembly to rotate around the axis of the vertical shaft to follow behind the direction of movement. If there is no offset, the wheel will not rotate if not facing the correct direction, either preventing motion or dragging across the ground. When in motion along a straight line,
4277-562: The chair more cumbersome. Caster flutter can be controlled by adding dampers or increasing the friction of the swivel joints. This can be accomplished by adding washers to the swivel joint. The friction increases as the weight on the front of the chair increases. Anytime the caster begins to flutter, it slows the chair and shifts weight to the front wheels. There are several online anti-flutter kits for retrofitting wheelchair casters in this manner. Other methods of reducing caster flutter include increasing swivel lead, using heavier grease, reducing
4368-419: The chair must be safe for riders. Increasing trailing distance can increase stability at higher speeds for wheelchair racing, but may create flutter at lower speeds for everyday use. Unfortunately, the more trail the caster has, the more space the caster requires to swivel. Therefore, in order to accommodate this extra swivel space, lengthening of frame or extending the footrests may be required. This tends to make
4459-465: The computer also contained circuitry for a warm-up stage, which minimized thermal shock to the tubes to ensure longer life. The computer contained a cooling fan which directed filtered air through ducts to the tubes and diodes, to extend component life and ensure proper operation. No expensive air conditioning was necessary if the LGP-30 was operated at reasonable temperatures. There were 32 bit locations per drum word, but only 31 were used, permitting
4550-429: The console typewriter, a Friden Flexowriter . The operator pressed a lever on the Flexowriter to read an address field and pressed a button on the front panel to transfer the address into a computer register. Then the lever on the Flexowriter was pressed to read the data field and three more buttons were pressed on the front panel to store it at the specified address. This process was repeated, maybe six to eight times, and
4641-417: The drum. As it did each of the additions associated with the multiplication, it effectively shifted the operand right, acting as if the binary point were on the left side of the word, as opposed to the right side as on most other computers. The divide operation worked similarly. To further reduce costs, the traditional front panel lights showing internal registers were absent. Instead, Librascope mounted
SECTION 50
#17328553628634732-455: The earlier personal computers and game consoles , like the Intel 386 and 486SX , also lacked an FPU. The absolute resolution (difference between successive values) of any fixed-point format is constant over the whole range, namely the scaling factor S . In contrast, the relative resolution of a floating-point format is approximately constant over their whole range, varying within a factor of
4823-477: The first division requires rounding and therefore the result is not exact. For example, division of 3456 scaled by 1/100 (34.56) and 1234 scaled by 1/1000 (1.234) yields the integer 3456÷1234 = 3 (rounded) with scale factor (1/100)/(1/1000) = 10, that is, 30. As another example, the division of the first number by 155 implicitly scaled by 1/32 (155/32 = 4.84375) yields the integer 3456÷155 = 22 (rounded) with implicit scaling factor (1/100)/(1/32) = 32/100 = 8/25, that
4914-407: The first number by 155 implicitly scaled by 1/32 (155/32 = 4.84375) yields the integer 123×155 = 19065 with implicit scaling factor (1/1000)×(1/32) = 1/32000, that is 19065/32000 = 0.59578125. In binary, it is common to use a scaling factor that is a power of two. After the multiplication, the scaling factor can be divided away by shifting right. Shifting is simple and fast in most computers. Rounding
5005-422: The first programmers of ENIAC . He designed a usable computer with a minimal amount of hardware. The single address instruction set had only 16 commands. Magnetic drum memory held the main memory , and the central processing unit (CPU) processor registers , timing information, and the master bit clock, each on a dedicated track. The number of vacuum tubes was minimized by using solid-state diode logic ,
5096-444: The fixed-point polynomials are evaluated using Horner's method (e.g. y = (( ax + b ) x + c ) x + d ) to reduce the number of times that rounding occurs, and the fixed-point multiplications utilize rounding addends. To add or subtract two values with the same implicit scaling factor, it is sufficient to add or subtract the underlying integers; the result will have their common implicit scaling factor, can thus can be stored in
5187-525: The floor and an elevator car. However, the larger the diameter of a caster wheel, the higher the caster support arm must be. Either the base of a low-hanging object must be lifted higher above the wheels, or the casters must hang out to the sides straddling the low-hanging supported object. While rotating around the vertical shaft, swivel caster wheels sweep out a space. Larger wheels require more of this space. Load capacity may be increased by using wider wheels with more ground contact area. However, when rotating
5278-477: The ground, it can be in any orientation. This can cause the vehicle to suddenly move in the direction that the caster is pointed. At slower speeds, the caster’s ability to swivel can correct the direction and can continue travel in the desired direction. But at high speeds this can be dangerous as the wheel may not be able to swivel quickly enough and the vehicle may lurch in any direction. Electric and racing wheelchair designers are very concerned with flutter because
5369-692: The hacker epic The Story of Mel . A software simulation of the LGP-30 and LGP-21 are supported by SIMH , a free and open source, multi-platform multi-system emulator. Caster A caster (or castor ) is an undriven wheel that is designed to be attached to the bottom of a larger object (the "vehicle") to enable that object to be moved. Casters are used in numerous applications, including shopping carts , office chairs , toy wagons , hospital beds, and material handling equipment. High capacity, heavy duty casters are used in many industrial applications, such as platform trucks, carts, assemblies, and tow lines in plants. Casters may be fixed to roll along
5460-426: The instructions which use them. There were 64 tracks, each with 64 words (sectors). The time between two adjacent physical words was about 0.260 millisecond (ms), and the time between two adjacent addresses was 9 x 0.260 or 2.340 ms. The worst-case access time was 16.66 ms. Half of the instruction (15 bits) was unused. The unused half could have been used for extra instructions, indexing, indirect addressing , or
5551-406: The integer 3075 then must be multiplied by 1/100, that is, divided by 100, to yield either 31 (0.31) or 30 (0.30), depending on the rounding policy used. Similarly, the operation r ← r / s will require dividing the integers and explicitly multiplying the quotient by S . Rounding and/or overflow may occur here too. To convert a number from floating point to fixed point, one may multiply it by
SECTION 60
#17328553628635642-461: The integer, or appending zero digits. However, this operation must preserve the sign of the number. In two's complement representation, that means extending the sign bit as in arithmetic shift operations. If S does not divide R (in particular, if the new scaling factor S is greater than the original R ), the new integer may have to be rounded . In particular, if r and s are fixed-point variables with implicit scaling factors R and S ,
5733-464: The last 3 decimal digits are implicitly assumed to be a decimal fraction), and the value 1 230 000 can be represented as 1230 with an implicit scaling factor of 1000 (with "minus 3" implied decimal fraction digits, that is, with 3 implicit zero digits at right). This representation allows standard integer arithmetic logic units to perform rational number calculations. Negative values are usually represented in binary fixed-point format as
5824-509: The mass of the wheel, or increasing friction with the ground by changing materials. Casters are also stopped completely using caster cups. Ergonomic casters are designed with consideration for the operating environment and the task to be performed so that any injurious effects on the operator are minimized. Long-term repetitive actions involving resisting casters can contribute to strain injuries. Improper specifications can also contribute to reduced service life of casters. Many parameters play
5915-451: The norm for field-programmable gate array (FPGA) implementations, as floating-point support in an FPGA requires significantly more resources than fixed-point support. A fixed-point representation of a fractional number is essentially an integer that is to be implicitly multiplied by a fixed scaling factor. For example, the value 1.23 can be stored in a variable as the integer value 1230 with implicit scaling factor of 1/1000 (meaning that
6006-403: The operation r ← r × s require multiplying the respective integers and explicitly dividing the result by S . The result may have to be rounded, and overflow may occur. For example, if the common scaling factor is 1/100, multiplying 1.23 by 0.25 entails multiplying 123 by 25 to yield 3075 with an intermediate scaling factor of 1/10000. In order to return to the original scaling factor 1/100,
6097-462: The other hand, a smaller scaling factor means a smaller range of the values that can be stored in a given program variable. The maximum fixed-point value that can be stored into a variable is the largest integer value that can be stored into it, multiplied by the scaling factor; and similarly for the minimum value. For example, the table below gives the implied scaling factor S , the minimum and maximum representable values V min and V max , and
6188-432: The other hand, the use of fixed point requires greater care by the programmer. Avoidance of overflow requires much tighter estimates for the ranges of variables and all intermediate values in the computation, and often also extra code to adjust their scaling factors. Fixed-point programming normally requires the use of integer types of different widths . Fixed-point applications can make use of block floating point , which
6279-625: The price of its predecessor. Unfortunately it was also about one-third as fast as the earlier computer. The central computer weighed about 90 pounds (41 kg), the basic system (including printer and stands) about 155 pounds (70 kg). Another, more-powerful successor machine, was the General Precision RPC 4000, announced in 1960. Similar to the LGP-30, but transistorized, it featured 8,008 32-bit words of memory drum storage. It had 500 transistors and 4,500 diodes, sold for $ 87,500 and weighed 500 pounds (230 kg). Edward Lorenz used
6370-423: The programmer. The programming language resembles three-operand assembly code with two source operands and one destination operand. All numbers are in floating point with an eight digit mantissa and two digit exponent. Natural logs and exponents are supported along with sin, cos , and arctan . Up to four nested loops are supported. Table look-up and block memory move operations are implemented. A bit more than half
6461-401: The result may require one bit more than the operands. In multiplication of two unsigned integers with m and n bits, the result may have m + n bits. In case of overflow, the high-order bits are usually lost, as the un-scaled integer gets reduced modulo 2 where n is the size of the storage area. The sign bit, in particular, is lost, which may radically change the sign and the magnitude of
6552-411: The same program variables as the operands. These operations yield the exact mathematical result, as long as no overflow occurs—that is, as long as the resulting integer can be stored in the receiving program variable . If the operands have different scaling factors, then they must be converted to a common scaling factor before the operation. To multiply two fixed-point numbers, it suffices to multiply
6643-409: The scaling factor S , then round the result to the nearest integer. Care must be taken to ensure that the result fits in the destination variable or register. Depending on the scaling factor and storage size, and on the range input numbers, the conversion may not entail any rounding. To convert a fixed-point number to floating-point, one may convert the integer to floating-point and then divide it by
6734-657: The scaling factor S . This conversion may entail rounding if the integer's absolute value is greater than 2 (for binary single-precision IEEE floating point) or of 2 (for double-precision). Overflow or underflow may occur if | S | is very large or very small, respectively. Typical processors do not have specific support for fixed-point arithmetic. However, most computers with binary arithmetic have fast bit shift instructions that can multiply or divide an integer by any power of 2; in particular, an arithmetic shift instruction. These instructions can be used to quickly change scaling factors that are powers of 2, while preserving
6825-737: The sign of the number. Early computers like the IBM 1620 and the Burroughs B3500 used a binary-coded decimal (BCD) representation for integers, namely base 10 where each decimal digit was independently encoded with 4 bits. Some processors, such as microcontrollers, may still use it. In such machines, conversion of decimal scaling factors can be performed by bit shifts and/or by memory address manipulation. Some DSP architectures offer native support for specific fixed-point formats, for example, signed n -bit numbers with n −1 fraction bits (whose values may range between −1 and almost +1). The support may include
6916-418: The top plate. Today, many industrial caster bodies are made by laser cutting the body from a single metal blank and then using a press brake to shape the legs to the required ninety degree angle, thus producing a mechanically stronger device. Various factors affect industrial caster performance. For example, larger wheel diameters and widths provide higher weight capacity by distributing the load's weight across
7007-403: The total LGP-30 memory is used by the interpreter; it takes about 30 minutes to load the paper tape via the Flexowriter. Floating point add, subtract, multiply, and divide take less than 455 milliseconds each. Cosine is calculated in 740 milliseconds. The procedure for starting, or " booting " the LGP-30 was one of the most complicated ever devised. First, the bootstrap paper tape was snapped into
7098-450: The two underlying integers, and assume that the scaling factor of the result is the product of their scaling factors. The result will be exact, with no rounding, provided that it does not overflow the receiving variable. For example, multiplying the numbers 123 scaled by 1/1000 (0.123) and 25 scaled by 1/10 (2.5) yields the integer 123×25 = 3075 scaled by (1/1000)×(1/10) = 1/10000, that is 3075/10000 = 0.3075. As another example, multiplying
7189-448: The underlying integer must be multiplied by the ratio R / S . Thus, for example, to convert the value 1.23 = 123/100 from scaling factor R =1/100 to one with scaling factor S =1/1000, the integer 123 must be multiplied by (1/100)/(1/1000) = 10, yielding the representation 1230/1000. If the scaling factor is a power of the base used internally to represent the integer, changing the scaling factor requires only dropping low-order digits of
7280-410: The usual 2 scaling. The Julia programming language implements both versions. Any binary fraction a /2 , such as 1/16 or 17/32, can be exactly represented in fixed-point, with a power-of-two scaling factor 1/2 with any n ≥ m . However, most decimal fractions like 0.1 or 0.123 are infinite repeating fractions in base 2. and hence cannot be represented that way. Similarly, any decimal fraction
7371-536: The value will always be an integer multiple of b . Fixed-point representation can also be used to omit the low-order digits of integer values, e.g. when representing large dollar values as multiples of $ 1000. When decimal fixed-point numbers are displayed for human reading, the fraction digits are usually separated from those of the integer part by a radix character (usually '.' in English, but ',' or some other symbol in many other languages). Internally, however, there
7462-433: The value. Some processors can set a hardware overflow flag and/or generate an exception on the occurrence of an overflow. Some processors may instead provide saturation arithmetic : if the result of an addition or subtraction were to overflow, they store instead the value with the largest magnitude that can fit in the receiving area and has the correct sign. However, these features are not very useful in practice; it
7553-501: The values −11/2 = −88, −11/2 = −0. 343 75 , and −11/2 = −0. 002 685 546 875 , respectively. Alternatively, negative values can be represented by an integer in the sign-magnitude format, in which case the sign is never included in the number of implied fraction bits. This variant is more commonly used in decimal fixed-point arithmetic. Thus the signed 5-digit decimal integer (−00025) 10 , taken with -3, +5, and +12 implied decimal fraction digits, would represent
7644-449: The values −25/10 = −25000, −25/10 = −0.00025, and −25/10 = −0. 000 000 000 025 , respectively. A program will usually assume that all fixed-point values that will be stored into a given variable, or will be produced by a given instruction , will have the same scaling factor. This parameter can usually be chosen by the programmer depending on the precision needed and range of values to be stored. The scaling factor of
7735-509: The vehicle travels along a straight line. Like the simpler rigid caster, a swivel caster incorporates a wheel mounted to a fork, but an additional swivel joint above the fork allows the fork to freely rotate about 360°, thus enabling the wheel to roll in any direction. This makes it possible to easily move the vehicle in any direction without changing its orientation. Swivel casters are sometimes attached to handles so that an operator can manually set their orientation. The improved swivel caster
7826-411: The vertical shaft is locked but the wheel can still turn, the caster becomes a directional caster, but one which may be locked to roll in one direction along any horizontal axis. In some cases it is useful to be able to brake or lock all casters at the same time, without having to walk around to individually engage a mechanism on each one. This may be accomplished using a central lock mechanism engaged by
7917-436: The word. The address bits are further divided by track and sector. Although all instructions have an address, some do not use the address. It is customary to enter an address of 0000 in these instructions. The LGP-30 had a high-level language called ACT-III. Every token had to be delimited by an apostrophe, making it hard to read and even harder to prepare tapes: Dartmouth College developed two implementations of ALGOL 60 for
8008-694: Was available as a separate peripheral. The computer contained 113 electronic tubes and 1450 diodes . The tubes were mounted on 34 etched circuit pluggable cards which also contain associated components. The 34 cards were of only 12 different types. Card-extenders were available to permit dynamic testing of all machine functions. 680 of the 1450 diodes were mounted on one pluggable logic board . The LGP-30 required 1500 watts operating under full load. The power inlet cord could plug into any standard 115 volt 60-cycle single-phase line. The computer incorporated voltage regulation suitable for powerline variation of 95 to 130 volts. In addition to power regulation,
8099-469: Was invented in 1920 by Seibert Chesnutt, US Patent 1341630, which was easily manufactured by stamping, and incorporated ball bearings for longer life. Basic swivel casters were in evidence in Charles Darwin's famous "office chair" as early as the 1840s. Additionally, a swivel caster typically must include a small amount of offset distance between the center axis of the vertical shaft and the center axis of
8190-451: Was represented in hexadecimal instead of octal , but being a very inexpensive machine it used the physical typewriter keys that correspond to positions 10 to 15 in the type basket for the six non-decimal characters (as opposed to the now normal A – F) to represent those values, resulting in 0 – 9 f g j k q w, which was remembered using the phrase "FiberGlass Javelins Kill Quite Well". The LGP-30 has 16 instructions. Each instruction occupies
8281-463: Was widely used from the late 1960s to the 1980s for real-time computing that was mathematically intensive, such as flight simulation and in nuclear power plant control algorithms. It is still used in many DSP applications and custom-made microprocessors. Computations involving angles would use binary angular measurement . Binary fixed point is used in the STM32G4 series CORDIC co-processors and in
#862137