Понятие<Ring>представляет<Group>, которые также образуют<Monoid>в рамках второй двоичной операции, которая распределяется по первой.
Кольцопредставляет собой алгебраическую структуру, построенную поверх<Group>, которая требует моноидальной структуры относительно второй двоичной операции. Эта вторая двоичная операция должна распределяться по первой. В частности,<Ring>является тройным<(S, +, *)>таким, что<(S, +)>является<Group>,<(S, *)>является<Monoid>и<*>распределяется над<+>, то есть.
x * (y + z) == (x * y) + (x * z)
Вторая двоичная операция часто пишется<*>с ее тождеством, написанным<1>, в отношении<Ring>целых чисел при умножении. Используемые здесь названия методов относятся к этому точному кольцу.
Minimal complete definintion
<one>и<mult>удовлетворяющие законам
Laws
Для всех объектов<x>,<y>,<z>из<Ring><R>должны быть соблюдены следующие законы:
Тип данных<T>является арифметическим, если<std::is_arithmetic<T>::value>является истинным. Для небулевого арифметического типа данных<T>модель<Ring>автоматически определяется с помощью предоставленной модели<Group>и настройки.
The rationale for not providing a Ring model for bool is the same as for not providing Monoid and Group models.
Structure-preserving functions
Пусть<A>и<B>будет два<Ring>. Функция<f : A -> B>называется функцией. Кольцевой морфизм, если он сохраняет кольцевую структуру между<A>и<B>. Строго, для всех объектов<x, y>типа данных<A>,
Это означает, что<f>также будет<Group>морфизмом. Функции с этими свойствами прекрасно взаимодействуют с<Ring>с, из-за чего и получают такую особую обработку.
Elevate a ring element to its nth power.Specifically, power(x, n), is equivalent to multiplying x with itself n times using the Ring's multiplication. If the power is equal to zero, the Ring's identity (one) is returned. More...
Метод<mult>«перегружен» для обработки различных типов данных с определенными свойствами. В частности,<mult>определяется дляразличныхтипов данных<A>и<B>, так что
AиBимеют общий тип данныхC, определяемый метафункциейcommon.
A,BиC— всеRing, взятые индивидуально.
to<C> : A -> Bиto<C> : B -> CявляютсяRingвстроенными, как определеноis_embeddingметафункцией.
Определение<mult>для типов данных, удовлетворяющих вышеуказанным свойствам, получено путем установки
Поднимите кольцевой элемент до его<n>мощности. В частности,<power(x, n)>эквивалентно умножению<x>с самим собой<n>раз с использованием умножения Кольца. Если сила равна<zero>, то идентичность Кольца<one>возвращается.
Parameters
x
(67) элемент, который приподнят до своей (68) мощности.
n
Неотрицательное<IntegralConstant>, представляющее силу, к которой<x>приподнята.
Note
Only the tag of x is used for tag-dispatching.
Example
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
Статья Boost.Hana: Ring раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.