Калькулятор должен показывать результат математического выражения, которое вы ввели, и это намного, намного сложнее, чем кажется. То, что я собираюсь вам рассказать, — это величайшая история о разработке приложения-калькулятора. Взгляните на калькулятор iOS. Что-нибудь заметили? Он показывает неверный результат. (10^100) + 1 − (10^100) равно 0, а не 1. В Android всё правильно. И история о том, как это произошло, совершенно безумна.
Рубрика «погрешность»
Величайшая история разработки приложения-калькулятора: как Google создал почти идеальный инструмент
2025-02-16 в 17:45, admin, рубрики: гугл, калькуляторы, математика, погрешностьСпутник «Глонасс-М» выведен на техобслуживание из-за возросшей погрешности
2019-02-14 в 10:39, admin, рубрики: глонасс-м, космонавтика, погрешность, проблемы, спутникиОдин из навигационных спутников «Глонасс-М» пришлось временно вывести на техническое обслуживание. Причина — значительное превышение нормы погрешности, что обнаружилось после анализа данных суточного мониторинга. Во время выведения из эксплуатации спутник находился над южной частью Африки.
Аппарат, о котором идет речь, запустили на орбиту 2 марта 2010 года, в эксплуатацию он введен 28 марта. Номер спутника — 731. В глобальную сеть станций мониторинга входят российские станции сети СДКМ (станции на территории России и 2 станции в Антарктиде) и станции зарубежных организаций (IGS, Euref, TrigNet, RBMC и др.).
Читать полностью »
Трехмерный движок внутри запроса SQL
2019-01-11 в 8:21, admin, рубрики: 3d, 3d-движок, phong, postgresql, ray marching, raymarching, sql, sqlite, аппроксимация, аппроксимация квадратного корня, вавилонский метод, затенение по фонгу, квадратный корень, любителей читать теги, магическая константа, метод герона, ненормальное программирование, погрешность, поздравляю с первой пятницей, рекурсивные запросы, трассировка лучей, трехмерный движокНесколько лет назад на форуме SQL.ru решили провести сравнение реализаций трассировщиков лучей на разных языках программирования. К сожалению, моя заявка не может участвовать т.к. она не выводит надпись «PIXAR», поэтому публикую ее здесь.
Для чистоты эксперимента я использовал SQLite без расширений. Оказалось, что там нет даже функции SQRT.
WITH RECURSIVE numbers AS (SELECT 0 AS n UNION ALL SELECT n+1 FROM numbers WHERE n<89),
pixels AS (SELECT rows.n as row, cols.n as col FROM numbers as rows CROSS JOIN numbers as cols WHERE rows.n > 4 AND rows.n < 38 AND cols.n > 9 AND cols.n < 89),
rawRays AS (SELECT row, col, -0.9049 + col * 0.0065 + row * 0.0057 as x, -0.1487 + row * -0.0171 as y, 0.6713 + col * 0.0045 + row * -0.0081 as z FROM pixels),
norms AS (SELECT row, col, x, y, z, (1 + x * x + y * y + z * z) / 2 as n FROM rawRays),
rays AS (SELECT row, col, x / n AS x, y / n AS y, z / n AS z FROM norms),
iters AS (SELECT row, col, 0 as it, 0 as v FROM rays UNION ALL SELECT rays.row, rays.col, it + 1 AS it, v + MAX(ABS(0.7+v*x) - 0.3, ABS(0.7+v*y) - 0.3, ABS(-1.1+v*z) - 0.3, -((0.7+v*x) * (0.7+v*x) + (0.7+v*y) * (0.7+v*y) + (-1.1+v*z) * (-1.1+v*z)) * 1.78 + 0.28) AS v FROM iters JOIN rays ON rays.row = iters.row AND rays.col = iters.col WHERE it < 15),
lastIters AS (SELECT it0.row, it0.col, it0.v AS v0, it1.v AS v1, it2.v AS v2 FROM iters as it0 JOIN iters AS it1 ON it0.col = it1.col AND it0.row = it1.row JOIN iters AS it2 ON it0.col = it2.col AND it0.row = it2.row WHERE it0.it = 15 AND it1.it = 14 AND it2.it = 13),
res AS (SELECT col, (v0 - v1) / (v1 - v2) as v FROM lastIters)
SELECT group_concat(substr('$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^. ', round(1 + max(0, min(66, v * 67))), 1) || CASE WHEN col=88 THEN X'0A' ELSE '' END, '') FROM res;
:++++I _________________________" ------/jucYJLQ0OZmwwwwwwwmmZO0QCUXcnj---------- ???????:<}/nzJQOwqdbkhao***####**o LUcx|[<;???????????????? ]]]]]]]]][[[ !{xu; o#MW&8%BB@@@@@ -ct[l ]]]]]]]]]]]??- U[[[[[[[}}}}}}}}} ;1X] $$$$$$$$$$ cx[" [[[[[[[[]]]?? UUJJJCCCLLL{{{{{{{{{{ :|QZzffB$$$$$$ |Qu? {{{{{{}}}[[]]??- YUUJJJCCCLLLQQ000OOO111111111 ,l!!; 111111111111{{}}[[]]??- YUUJJJCCCLLLQQQ00OOOZZZmmmwww(((((((((((((((((((()))))))))))))11{{ i]??- YYUUUJJCCCLLL ?fuv| ZZZmmmwwwqqqpppd||||||||||||||||||((())11{ i++i;??-- YYYUUUJJJ i Cmmwwwqqqppppdddbbbbk///////||(())11 }czfYuf{_-- XYYUUU Wwwwqqqpppddddbbbbkkkk/||(())) |j :zr)-- XXYYY; $$wqqqqpppddddbbbbk/|||(()) ^X Jcf- XXXY $$$$xwqqqppppddddbbb/||(()) v LX-_ zXX! $$$$$$$nqqqqppppdddbb||(()) q mQX- zzX> $$$$$$$$$$$$qqqqppppddd|(()) k dmL-_ zzl $$$$$$$$$$$$$$wqqqqppppd((() o W*kqOJ__ czz? $$$$$$$$$$$$$$$$$ wqqqqpp|(() O $$BadmQ__ ccc!1x $$$$$$$$ wwqqqq(() {$$$$$$$Babw0___ vcc<)xXQm W%@$$$$$$ mwwwwq()) %$$$$$@%W#adwQ___ vvcc>1rzCZqkoM&B$$ bmmwww)) )o$$$$B&MokpZL-__+ uvvvcc]tuUQmpkoM Zmmmm)1 J- &MohdmQU-__++ uuvvvcc{jvUQmp ZZZm)11 J: kpmQUc-__; nuuuvvvcc}fuYL nOOZZ11 /| .0CXu}-_ nuuvvvccc-)jv !00OOO11{ ;/zvzvxt1-- vvvcccz+{ }QQ000O1{{ !~+~>?- ccczz:<] : LQQQQ00{{}}[ ]?? zzzzXX ";I;" JCCCLLLLQQQ{}}[[]]]? zzXXXYYYUUUUJJJCCCCLLL{}}[[]]] XXYYYYUUUJJJJCCCC}}[[]] YYYUUUUJJJJC}[[] YUUUUJJ[[ UU
Под катом построчный разбор запроса. Как обычно, достаточно знания основ SQL и школьной математики.
Читать полностью »
Компьютерная мышка как точный датчик
2017-07-18 в 12:17, admin, рубрики: 7 сегментный индикатор, arduino, diy или сделай сам, linux, mouse, Raspberry Pi, Raspberry Pi 3, raspberrypi, raspbian, whiring pi, whiringpi, датчик, датчик движения, датчик перемещения, дисплей, индикатор, индикация, линейное перемещение, линейный датчик, малина, малина пи, малинапи, мышка, параллельные процессы, погрешность, распберри, распберрипи, робототехника, светодиоды, Электроника для начинающихЗадача: быстро сделать датчик линейного перемещения из компьютерной мышки.
В обычных мышках прячется высокочувствительный оптический датчик. Там скрывается своя маленькая «камера» и процессор обработки, который отслеживает передвижения малейших точек на поверхности. В топовых мышках разрешающая способность составляет всего 3 мкм!
С какими подмышиными камнями мы столкнулись, плюс техническая часть, расскажем дальше!