В ответ на: Вот код
Те же проблемы, что и у афтара топа: упадет на вызове size_normalize(800000, 600000, 80, 60), хотя я не вижу объективных причин не выполнить такого преобразования размеров. И умножение перед делением (RR * $to_sx / $sx) создает ошибку переполнения в целочисленной арифметике, если передать $to_sx > 2^29 (хотя на php, возможно, это и пройдет, если он автоматом подбирает типы данных).
Для того, чтобы утверждать, что что-то упадёт, нужно знать предметную область. Вы спросили tolstopuz'а, бывают ли у него картинки по 800000 пикселей (или $to_sx == 2^29)? Каков контракт? Мне, например, не понравилось в Вашем коде то, что фактически запрограммирован тот самый сферический конь в вакууме. Во-первых проигнорировано утверждение, что картинки на входе гарантированно не имеют отрицательные размеры и зачем-то наколбашена проверка самого себя под мифом проверки предусловий. Типа "программирование по контракту". Только эти "контракты" у Вас будут сидеть в продакшине и за эти строки будет платить заказчик. Если в с++ ассерты можно убрать из релиза, то эти художества намертво сидят в коде и впустую греют процессор. Их основное предназначение - выявить ошибки вашей же команды, но не выполнение целевой задачи. Этот случай отлично описан в Pragmatic Programmer. Во-вторых, почему-то не замечена изначальная константа EQUAL_ZERO и забит общий ОкадЭмический алгоритм. То есть Вы, не глядя на предмет, нарушили правила игры и забабахали сразу броненосец. Вот поэтому я и написал, что если платят за процесс написания (число строк кода), а не за результат, то я пишу точно так же как Вы - по-максимуму. В-третьих, длинные названия переменных, но раз пишут так делать в умных книжках (писать как рассказ), то ладно уж. По коду видно, что его писал типичный enterprise программист, солидный, начитанный, намертво уверенный в своей правоте и неторопливый. Лоск на 10 из 10
В моём примере я только показал ось улучшения производительности. Но на чистовике бы только добавил внятное название контанты RR и выкидывание исключения с параметрами. Только не стал разбираться, как в PHP клеить параметры в строку. И никаких ненужных проверок псевдо-предусловий
Вижу зря я наезжал на tolstopuz'а. У этого дяТьки некоторым есть чему поучиться. Только по коду можно понять, кто о чём говорит

42