Archive
Hash Overflow due to 64 bit upcasting
hash = ( fpArray*2654404609 )>>12; // Calculate the hash and limit the value to 2^20 (1 Meg)
unsigned hash = fpArray * 2654404609;
hash = hash >> 12;
unsigned long hash = (unsigned long)fpArray * 2654404609;
hash = hash >> 12;
unsigned h2 = (unsigned)hash;
hash = ( fpArray*2654404609U )>>12; // Calculate the hash and limit the value to 2^20 (1 Meg)
(or)
const unsigned multipler = 2654404609; // here U suffix is not needed as the constant is explicitly made unsigned
hash = ( fpArray * multiplier ) >> 12;
Now, the computation will happen with 32 bit numbers to get the expected outputs.
Lessons Learned here:
- While using constants, beware of the upcasting and downcasting. So use proper suffixes like U, L, F etc.
- Instead of using constants directly in expressions, use them as constant variables.
- Be conscious about the compiler type and the assumptions made by the compiler in different build modes.
AWG Vs Current Flow Capacity
This write up is taken from http://www.engineeringtoolbox.com/wire-gauges-d_419.html
The AWG table below is for a single, solid, round conductor. Because of the small gaps between the strands in a stranded wire, a stranded wire with the same current-carrying capacity and electrical resistance as a solid wire, always have a slightly larger overall diameter. The higher the number – the thinner the wire. Typical household wiring is AWG number 12 or 14. For telephone wires there are common with AWG 22, 24, or 26.
| AWG | Diameter (mm) |
Diameter (in) |
Square (mm2) |
Resistance (ohm/1000m) |
| 40 | 0.08 | . | 0.0050 | 3420 |
| 39 | 0.09 | . | 0.0064 | 2700 |
| 38 | 0.10 | 0.0040 | 0.0078 | 2190 |
| 37 | 0.11 | 0.0045 | 0.0095 | 1810 |
| 36 | 0.13 | 0.005 | 0.013 | 1300 |
| 35 | 0.14 | 0.0056 | 0.015 | 1120 |
| 34 | 0.16 | 0.0063 | 0.020 | 844 |
| 33 | 0.18 | 0.0071 | 0.026 | 676 |
| 32 | 0.20 | 0.008 | 0.031 | 547 |
| 30 | 0.25 | 0.01 | 0.049 | 351 |
| 28 | 0.33 | 0.013 | 0.08 | 232.0 |
| 27 | 0.36 | 0.018 | 0.096 | 178 |
| 26 | 0.41 | 0.016 | 0.13 | 137 |
| 25 | 0.45 | 0.018 | 0.16 | 108 |
| 24 | 0.51 | 0.02 | 0.20 | 87.5 |
| 22 | 0.64 | 0.025 | 0.33 | 51.7 |
| 20 | 0.81 | 0.032 | 0.50 | 34.1 |
| 18 | 1.02 | 0.04 | 0.82 | 21.9 |
| 16 | 1.29 | 0.051 | 1.3 | 13.0 |
| 14 | 1.63 | 0.064 | 2.0 | 8.54 |
| 13 | 1.80 | 0.072 | 2.6 | 6.76 |
| 12 | 2.05 | 0.081 | 3.3 | 5.4 |
| 10 | 2.59 | 0.10 | 5.26 | 3.4 |
| 8 | 3.25 | 0.13 | 8.30 | 2.2 |
| 6 | 4.115 | 0.17 | 13.30 | 1.5 |
| 4 | 5.189 | 0.20 | 21.15 | 0.8 |
| 2 | 6.543 | 0.26 | 33.62 | 0.5 |
| 1 | 7.348 | 0.29 | 42.41 | 0.4 |
| 0 | 8.252 | 0.33 | 53.49 | 0.31 |
| 00 (2/0) | 9.266 | 0.37 | 67.43 | 0.25 |
| 000 (3/0) | 10.40 | 0.41 | 85.01 | 0.2 |
| 0000 (4/0) | 11.684 | 0.46 | 107.22 | 0.16 |
The higher the gauge number, the smaller the diameter, and the thinner the wire. Because of less electrical resistance a thick wire will carry more current with less voltage drop than a thin wire. For a long distance it may be necessary to increase the wire diameter – reducing the gauge – to limit the voltage drop.
| American Wire Gauge (AWG) | ||||||||||
| Length (feet) |
Current (amps) | |||||||||
| 5 | 10 | 15 | 20 | 25 | 30 | 40 | 50 | 60 | 70 | |
| 15 | 16 | 12 | 10 | 10 | 8 | 8 | 6 | 6 | 4 | 4 |
| 20 | 14 | 12 | 10 | 8 | 8 | 6 | 6 | 4 | 4 | 4 |
| 25 | 14 | 10 | 8 | 8 | 6 | 6 | 4 | 4 | 2 | 2 |
| 30 | 12 | 10 | 8 | 6 | 6 | 4 | 4 | 2 | 2 | 2 |
| 40 | 12 | 8 | 6 | 6 | 4 | 4 | 2 | 2 | 1 | 1/0 |
| 50 | 10 | 8 | 6 | 4 | 4 | 2 | 2 | 1 | 1/0 | 1/0 |
| 60 | 10 | 6 | 6 | 4 | 2 | 2 | 1 | 1/0 | 2/0 | 2/0 |
| 70 | 10 | 6 | 4 | 2 | 2 | 2 | 1/0 | 2/0 | 2/0 | 3/0 |
| 80 | 8 | 6 | 4 | 2 | 2 | 1 | 1/0 | 2/0 | 3/0 | 3/0 |
| 90 | 8 | 4 | 4 | 2 | 1 | 1/0 | 2/0 | 3/0 | 3/0 | 4/0 |
| SWG | inches | mm |
| 7/0 | 0.500 | 12.700 |
| 6/0 | 0.464 | 11.786 |
| 5/0 | 0.432 | 10.973 |
| 4/0 | 0.400 | 10.160 |
| 3/0 | 0.372 | 9.449 |
| 2/0 | 0.348 | 8.839 |
| 1/0 | 0.324 | 8.236 |
| 1 | 0.300 | 7.620 |
| 2 | 0.276 | 7.010 |
| 3 | 0.252 | 6.401 |
| 4 | 0.232 | 5.893 |
| 5 | 0.212 | 5.385 |
| 6 | 0.192 | 4.877 |
| 7 | 0.176 | 4.470 |
| 8 | 0.160 | 4.064 |
| 9 | 0.144 | 3.658 |
| 10 | 0.128 | 3.251 |
| 11 | 0.116 | 2.946 |
| 12 | 0.104 | 2.642 |
| 13 | 0.092 | 2.337 |
| 14 | 0.080 | 2.032 |
| 15 | 0.072 | 1.829 |
| 16 | 0.064 | 1.626 |
| 17 | 0.056 | 1.422 |
| 18 | 0.048 | 1.219 |
| 19 | 0.040 | 1.016 |
| 20 | 0.036 | 0.914 |
| 21 | 0.032 | 0.813 |
| 22 | 0.028 | 0.711 |
| 23 | 0.024 | 0.610 |
| 24 | 0.022 | 0.559 |
| 25 | 0.020 | 0.508 |
| 26 | 0.018 | 0.457 |
| 27 | 0.0164 | 0.417 |
| 28 | 0.0148 | 0.376 |
| 29 | 0.0136 | 0.345 |
| 30 | 0.0124 | 0.315 |
| 31 | 0.0116 | 0.295 |
| 32 | 0.0108 | 0.274 |
| 33 | 0.0100 | 0.254 |
| 34 | 0.0092 | 0.234 |
| 35 | 0.0084 | 0.213 |
| 36 | 0.0076 | 0.193 |
| 37 | 0.0068 | 0.173 |
| 38 | 0.006 | 0.152 |
| 39 | 0.0052 | 0.132 |
| 40 | 0.0048 | 0.122 |
| 41 | 0.0044 | 0.112 |
| 42 | 0.004 | 0.102 |
| 43 | 0.0036 | 0.091 |
| 44 | 0.0032 | 0.081 |
| 45 | 0.0028 | 0.071 |
| 46 | 0.0024 | 0.061 |
| 47 | 0.002 | 0.051 |
| 48 | 0.0016 | 0.041 |
| 49 | 0.0012 | 0.030 |
| 50 | 0.001 | 0.025 |
Mother
தாயின் பெருமைகளை என் தாய் எனக்குச் சொல்ல, இங்கே அதை தொகுத்துள்ளேன்.
- தாயில் சிறந்த கோவிலும் இல்லை
- தாயின் மடி மீண்டும் அமரமுடியாத சிம்மாசனம்
- குழந்தையின் எதிர்காலம் தாயின் கையில்தான் உள்ளது
- எல்லோரது இடத்தையும் தாய் வகிக்க முடியும், ஆனால் தாயின் இடத்தை வகிக்க வேறு எவராலும் முடியாது
- 1 கோடி போதனையை விட ஒருதுளி தாய்மை மேலானது
- மண்ணில் நல்லவனாக வாழவைப்பதும், நானிலத்தில் புகழ் பெற செய்வதும் தாய்தான்
- தாயை எதனோடும் ஒப்பிடுதல் கூடாது. ஏனெனில் அவள் ஈடுஇணை அற்றவள்
- உலகம் அனைத்தையும் ஒரு தட்டிலும், தாயை ஒரு தட்டிலும் வைத்து தராசில் நிறுத்தால் உலகின் தட்டுதான் மேலே இருக்கும்
- தாயின் இதயம்தான் குழந்தைகளின் பள்ளிக்கூடம்
- நல்ல தாயை அடைந்தவன் தான் சாதனைகளைப் படைத்து பெரிய மனிதனாக உருவெடுக்கிறான்
- தாயின் உள்ளத்தை அறிந்தவன் கடவுளின் கருணையை அறிந்தவன்
- வாஞ்சையுள்ள இதயதைப் பெற்றவளே தாயாவாள்
- தாயை வணங்குபவனுக்கு தெய்வம் வழிகாட்டும்
- தாய் எங்கிருக்கிறாளோ அந்த இடம் சொர்கம்
- தாயின் கண்ணீரை துடைப்பவனே சிறந்த மகன்
- அன்னைக்கு உதவாதவன் யாருக்கும் உதவாதவன்
- அன்னையின் அன்பிற்கு அளவில்லை
- தாயை பிரிந்த மகன் வெறும் கூடுதான்

Solar Panel Structure Design
This was the original design of the solar panel mounting structure. Later, I had simplified the design and fabricated them at the local metal fabricators. Please click on the images to open the big sized drawing.
Pole that would hold the weight of a heavy solar panel over a base structure (not shown).
Hinge design that would transfer the weight from the base structure to the pole, with one degree of freedom.

சூரிய ஒளி மின்சாரம் (Solar Electricity)

The completed Solar Panel mount structure.

Bottom side view of the panel. The Panel is fully resting on the Iron frame constructed in the nearby fabrication shop based on my design.

This is my assistant Aakash, the boy next door. He has been my aide for all the mechanical and automobile works.

The base frame of 30″ x 21″ with the center piece at 15″.

The base frame from perspective projection. The center piece is a 5″ x 2″ 10mm plate welded at the center. The holes are 10mm diameter drilled at 1″ and 3″ from the top and centered.

The main load bearing vertical pole measuring approx 2m and 2″ diameter. The base plate is 6″ in horizontal length and 6″ on vertical depths. The holes are 1/2″ and drilled at 3″ and 5″.

This is the solar panel bought from Akshaya Solar Pvt Ltd, AP. The panel is rated 12v 70w and of dimension 1200mm x 21″ and weighting approximately 5kg.

The swing arm connecting the base frame and vertical pole. The holes are 10 mm diameter and punched at 1″ and 3″ from the top. The bottom pipe is 2.25″ diameter and about 5″ long. The cross bolt is 0.5″ diameter. This swing arm mounts on the pole on one side and attached to the base frame on the other side. The base frame is pivoted on the top hole with swing setting using one of the 3 bottom holes. The positions are provided to compensate of uttrayanam (north bound sun movement) and dakshanayanam (south bound sun’s movement).

The bottom link of the vertical pole. This U link attaches to the parapet wall, which is 6″ is width and the cross bolts pass through the wall to lock the vertical plates. The horizontal and the vertical plates are 6″x2″ and 10mm in thickness.

These are the bolts used. The 1″ (4 nos) bolts are used to secure the solar panel on the base frame. The 1.5″ bolts are used to secure the base frame to the swing arm. The 4″ bolt is used to secure the swing arm to the vertical pole and the 8″ bolts are the bolts to secure the entire unit on the parapet wall by passing through the wall.

no include path in which to search for limits.h
Why compiling STLport 5.1.5 using g++-4.4, one might get an error like the following:-
Building CXX object libs/bgt/CMakeFiles/bgt.dir/error.o
In file included from /opt/projects/stl/stlport/limits.h:27,
from /usr/include/c++/4.4/../4.4.5/climits:43,
from /opt/projects/stl/stlport/climits:27,
from /opt/projects/stl/stlport/stl/_algobase.h:42,
from /opt/projects/stl/stlport/stl/_alloc.h:47,
from /opt/projects/stl/stlport/stl/_string.h:23,
from /opt/projects/stl/stlport/stl/_ios_base.h:34,
from /opt/projects/stl/stlport/stl/_ios.h:23,
from /opt/projects/stl/stlport/stl/_ostream.h:24,
from /opt/projects/stl/stlport/ostream:31,
from /opt/projects/dev/libs/bgt/error.cpp:18:
/usr/include/../include/limits.h:125: error: no include path in which to search for limits.h
In file included from /opt/projects/stl/stlport/stl/_num_put.c:26,
from /opt/projects/stl/stlport/stl/_num_put.h:183,
from /opt/projects/stl/stlport/stl/_ostream.c:26,
from /opt/projects/stl/stlport/stl/_ostream.h:380,
from /opt/projects/stl/stlport/ostream:31,
from /opt/projects/dev/libs/bgt/error.cpp:18:
/opt/projects/stl/stlport/stl/_limits.h:148: error: ‘CHAR_BIT’ was not declared in this scope
/opt/projects/stl/stlport/stl/_limits.h:253: error: ‘CHAR_MIN’ was not declared in this scope
..
Looks like it is a bug in the STLport package itself as per the Release notes of STLport. After updating to STLport-5.2.1, the issue got fixed automatically.
Know to Say No
“I am not obligated” என்று விட்டேத்தியாக இருந்துவிடுவது எளிது, ஆனால் இந்த குணத்தால் நண்பர்களை இழக்க நேரிடலாம். இருப்பினும், பொறுப்புகளுக்கும்(responsibilities) வேண்டுகோள்களை ஏற்பதற்கும்(being obligated) வேறுபாடு உண்டு என்பதை உணர்ந்து நடந்தால், திறமையாக நிலைமையை சமாளிக்கமுடியும் என்பதில் ஐயமில்லை.
Symmetric Sigmoid

The function definition for a sigmoid is:
In programming languages the implementation should be in order to overcome the numerical overflow and underflow issues:
if ( t < 0 ) exp( t ) / ( 1.0 + ::exp( t ) ) else 1.0 / ( 1.0 + ::exp( -t ) )
In the plot, if the curve is stretched in Y-axis to make the Y-intercept at 0.0, the lower bound would get stretched to -1.0.
The function definition for a symmetric sigmoid is:
P symmetric (t) = 2.0 * P(t) – 1.0
The function can also be defined in terms of hyperbolic tangent as:
P symmetric (t) = tanh(t)
With sigmoid functions, it becomes possible to normalize any range in [-∞, +∞] onto [-1.0, +1.0].
Oil Cooler Assembly for Royal Enfield Thunderbird 350 AVL







