בתשובה להפונז, 19/01/22 13:02
באג 2022 745719
מספרם של אותם יחידי סגולה לא היה גבוה אז, ואני לא בטוח שהוא השתנה לרעה.

כשנתקלתי לפני כמה שנים בפעם הראשונה בקטע הקידוד הזה (כמדומני בבלוג של גדי אלכסנדרוביץ'):

float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;

x2 = number * 0.5F;
y = number;
i = * ( long * ) &y; // evil floating point bit level hacking
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration,
// this can be removed

return y;
}

המחשבה הראשונה שחלפה במוחי היתה שהשטח התקדם מאד מאז אותם ימים בהם היינו כותבים בקובול "add 1 to a". המחשבה השניה היתה שגם אז היו בטח כמה גאונים שתכנתו ברמה הזאת, ובעצם אולי אפילו הכרתי שטחית מי מהם. העובד הממוצע, אני בטוח שאין צורך להגיד, היה שש ליגות נמוך יותר. מה שכן, העבודה דרשה הכרות עם המחשב ברמה הרבה יותר קרובה לשפת מכונה מה שקורה היום: אמנם רוב הקידוד נעשה בשפות "גבוהות" - כלומר לא באסמבלר - אבל לא היו אמצעי ניפוי שגיאות מתקדמים, כך שנאלצנו לפענח תצלומי זכרון, מה שקרוי Dump.

חזרה לעמוד הראשי המאמר המלא

מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים