7/(-5) <> (-7)/5

Тема в разделе "WASM.A&O", создана пользователем cresta, 27 ноя 2004.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    При всей неочевидности частного (-2), данная формулировка даёт одинаковые частные и остатки для любого сочетания: хоть -7/5, хоть 7/-5.



    Володя, то что формула а = bq + r выдает однозначные результаты независимо от знака - это очень хорошо. Вот только как теперь быть с частным? Интуитивно, где-то на уровне подсознания понимаю, что если строго придерживаться этой формулы, то она не подведёт (допустим в ходе многочисленных вычислений с постоянной оглядкой на формулу) А вот как быть с представлением результата человеческому глазу? Похоже, кроме того экзаменатора никто и не поймет его :)
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    volodya



    Вот ещё вопрос такой: в том источнике, откуда почерпнуто всё это, написано так:


    А нет ли ещё других определений, какие ещё могут быть частные? Ну например "полное", или "частное для случая целочисленного деления" или что-либо ещё?
     
  3. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    данная формулировка даёт одинаковые частные и остатки для любого сочетания: хоть -7/5, хоть 7/-5.





    Это ты о делении?

    Да.

    floor(7/(-5)) == floor(-7/5) == -2



    Неполное частное может быть каким угодно числом (целым, понятное дело, т.к. мы говорим о целочисленной арифметике). Число может быть как отрицательным, так и положительным. И нулем, кстати, тоже может быть.



    Похоже, кроме того экзаменатора никто и не поймет его :)



    Этого экзаменатора поймет любой, кто дал себе труд ознакомиться с минимальными азами. А любой математик тебе в лоб даст за отрицательный остаток от деления :) И программой твоей пользоваться никто не будет :)
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    это всё надо хорошенько обдумать.
     
  5. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    >




    Вот интересно, в мануалах используются ессно буржуйские термины - в описании целочисленных инструкций (DIV, IDIV) - remainder, в описании инструкций FPU partial remainder. При этом partial remainder вычисленный FPREM соответствует результату IDIV, а partial remainder вычисленный FPREM1 - вообще хз чему:



    fprem (3,2) = 1

    fprem1 (3,2) = -1



    ВОт что нашел в словаре:



    remainder - остаток

    partial remainder - частичный остаток



    Дык вот, теперь совсем непонятно где что =)

    Ни одна из инструкций не вычисляет
    , хотя все вычисляют remainder'ы, причём разные.





    cresta



    Тебе зачем это нада ??

    Поскольку я экзамены никаким профессорам математики сдавать не собираюсь, для моих задач хватило вот этого:



     
  6. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Кроме теориии чисел (высшей арифметики) и стандартов IEEE есть еще элементарная арифметика начальных классов и понятие смешанных дробей. Элементарные понятия зародились в древние времена и полностью соответствуют человеческой логике и практическим задачам, в частности делению отрезков и т.п.

    Придется повторить пример

    7/(-5) = (-7)/5 = -1-2/5 = "минус одна целая и две пятых". Здесь -1 целая часть или "по научному" неполное частное. Дробная часть равна -2/5, и в том, что остаток равен 2 (по модулю) ни у какого школьника сомнений не вызывает. Вот вопрос со знаком остатка хитрее, т.к. здесь можно поумничать и записать -2/5 либо как (-2)/5 либо как 2/(-5). Здесь на помощь приходят выражения

    7=(-5)*(-1)+2 => остаток +2

    -7=5*(-1)-2 => остаток -2

    Для школьников все логично. А экзаменаторы глядят печально и наровят плюнуть в лицо - уж слишком все просто для мехмата.



    Ладно математики "хитрят" с отрицательными числами, а уж со стандартами IEEE дело обстоит еще интереснее, т.к. при округлении результата к ближайшему целому у нас и деление положительных чисел будет давать интересные "остатки". Попробуйте с таким подходом решить элементарную задачку о раскрое X метров ткани для пошива Y костюмов - останетесь в дураках. Для "нормального" человека остаток - это реальный кусок ткани, которого недостаточно для пошива еще одного костюма.



    PS: с теорией чисел я спорить не собираюсь, а просто хочу сказать, что инструкция IDIV работает "правильно" с точки зрения элементарной арифметики (смешаных дробей). Как говориться: "не нравится - не ешь".
     
  7. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Ну раз уж есть три разных подхода к делению, думаю, ничего страшного не произойдёт, если я для себя придумаю четвёртый. Наиболее для меня подходящий и логичный.
     
  8. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    leo >




    ...Великий и Могучий!

    Как моджет ОСТАТЬСЯ отрицательное (количество чего-либо) ?!



    "У Пети было Минус Три яблока, он отдал половину Маше, и осталось... =)



    ЗЫ

    деление можно "разложить" на вычитания ;)
     
  9. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Для школьников все логично.



    И это говорит человек, активно использующий мат. статистику... Эххх.. Делайте, что хотите. Хоть отрицательный у вас остаток, хоть положительный - мне до фени. Только потом не удивляйтесь, если нормальные люди (а не всякие там школьники или горе-от-ума-программисты) использовать ваш гениальный и сверх-наглядно-логичный продукт творчества не будут.
     
  10. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Друзья мои, не стоит кипятиться.

    Мне думается мы просто имеем дело с двумя разными определениями.



    Одно понятие остатка известно каждому из начальной школы. Как нас учили делить целые числа столбиком ? Для начала отбрасываем знаки, чтобы не мешались. Затем делим, пока остаток не окажется меньше делителя. Затем по известным правилам определяем знак частного. При таком "нормально-обывательском" подходе у нас всегда произведение частного q на делитель b оказывается по модулю меньше делимого a. Печальные вздохи экзаменатора, приведенные volodya, лишний раз это подтверждают - любой обыватель скажет, что "минус пять делить на три будет минус один и два в остатке". Другое дело, что задумываться о знаке остатка нас так и не научили. Но зато настойчиво учили делать проверки. В данном случае имеем a = b*q+r и |b*q| < |a|, откуда очевидно следует, что знак остатка r при делении столбиком должен быть равен знаку делимого a. О смешаных дробях я уже говорил - поскольку остаток имеет тот же знак, то вместо записи -5/3 = -1-2/3 можно использовать сокращенную запись в виде смешаной дроби и использовать выражение "минус один и две трети", где "и" подразумевает "минус".



    Теория чисел - дело другое. Начнем с того, что это довольно специфическая область математики. Возьмите любой популярный справочник по "вышке" (Корн-ы, Бронштейн\Семендяев, Выгодский и т.п.) - там можно найти все, что угодно кроме теории чисел. Во-вторых, известно что любая математическая теория строится на аксиомах и определениях и вытекающих из них теоремах. При этом, что взять за аксиомы, а что за вытекающие из них теоремы во многом дело вкуса. (По крайней мере мне известно не менее трех разных курсов элементарной школьной геометрии - сейчас кто-нибудь помнит пресловутую "конгруэнтность" ак.Колмогорова середины 70-х ?). Кроме вкуса немалую роль играет стройность и широта охвата создаваемой теории. Определение остатка от деления как неотрицательной величины позволяет единообразно выполнять сравнения по модулю как положительных так и отрицательных чисел. В этом случае у нас всегда b*q < a и остаток r >= 0. То что при таком "делении" получаются "странные" для обывателя результаты, теорию не волнуют, т.к. она не для обывателей. В хороших учебниках это по крайней мере оговаривают, чтобы студенты не удивлялись что -5/3 = -2 и 1 в остатке, а не -1 и -2/3 как его учили в школе.

    Закрыв глаза на такие странности, получаем хорошую стройную теорию с замечательными практическими приложениями. НО из этого не следует, что теоретико числовое определение остатка "лучше" или "правильнее", чем "обывательское". Просто - это разные вещи и не стоит их путать.



    И потом не будем забывать с чего начался "сыр-бор". С того, что инструкция IDIV "округляет" частное в сторону 0 и возвращает знаковый остаток, т.е. она работает именно так, как "учили в школе". Поэтому если нам "ученым" требуется теоретико числовой остаток, то нужна дополнительная коррекция: если EDX меньше 0, то прибавить к нему значение делителя.



    PS: Риторический вопрос к профессорам с мехмата: чему равен корень квадратный из -1 и почему FSQRT выдает ответ "на школьном уровне" ?