亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? concepts.hpp

?? 矩陣運(yùn)算源碼最新版本
?? HPP
?? 第 1 頁 / 共 2 頁
字號(hào):
// Copyright 2006. Peter Gottschling, Matthias Troyer, Rolf Bonderer// Software License for MTL// // Copyright (c) 2007 The Trustees of Indiana University. All rights reserved.// Authors: Peter Gottschling and Andrew Lumsdaine// // This file is part of the Matrix Template Library// // See also license.mtl.txt in the distribution.#ifndef LA_CONCEPTS_INCLUDE#define LA_CONCEPTS_INCLUDE#include <boost/config/concept_macros.hpp>#ifdef __GXX_CONCEPTS__#  include <concepts>#else#  ifdef LA_SHOW_WARNINGS#    warning "Concepts are not used"#  endif#endif#include <boost/numeric/linear_algebra/identity.hpp>#include <boost/numeric/linear_algebra/is_invertible.hpp>#include <boost/numeric/linear_algebra/inverse.hpp>#include <boost/numeric/linear_algebra/operators.hpp>#include <boost/numeric/linear_algebra/algebraic_concepts.hpp>#include <complex>// If desired one can disable the default concept maps with LA_NO_CONCEPT_MAPS// We consider to change the namespace from math to numeric// More precisely, the concepts may be moved into namespace numeric and the standard functions stay in math/// Namespace for mathematical concepts/** In contrast to the ones in algebra the concepts can require basic implementation concepts like std::Assignable */  namespace math {#ifdef __GXX_CONCEPTS__// ==================================// Classification of Arithmetic Types// ==================================// In addtion to std::Integralconcept Float<typename T>   : std::DefaultConstructible<T>, std::CopyConstructible<T>,    std::LessThanComparable<T>, std::EqualityComparable<T>{  T operator+(T);  T operator+(T, T);  T& operator+=(T&, T);  T operator-(T, T);  T operator-(T);  T& operator-=(T&, T);  T operator*(T, T);  T& operator*=(T&, T);  T operator/(T, T);  T& operator/=(T&, T);  // TBD: Some day, these will come from LessThanComparable,  // EqualityComparable, etc.  bool operator>(T, T);  bool operator<=(T, T);  bool operator>=(T, T);  bool operator!=(T, T);  requires std::Assignable<T>, std::SameType<std::Assignable<T>::result_type, T&>;}concept_map Float<float> {}concept_map Float<double> {}concept_map Float<long double> {}// The difference to Float is the lack of LessThanComparableconcept Complex<typename T>   : std::DefaultConstructible<T>, std::CopyConstructible<T>,    std::EqualityComparable<T>{  T operator+(T);  T operator+(T, T);  T& operator+=(T&, T);  T operator-(T, T);  T operator-(T);  T& operator-=(T&, T);  T operator*(T, T);  T& operator*=(T&, T);  T operator/(T, T);  T& operator/=(T&, T);  // TBD: Some day, these will come from EqualityComparable  bool operator!=(T, T);  requires std::Assignable<T>, std::SameType<std::Assignable<T>::result_type, T&>;}template <typename T>  requires Float<T>concept_map Complex<std::complex<T> > {}// TBD: Concept Arithmetic is useless like this, it should have operations and then be the base for// Integral, Float and Complexconcept Arithmetic<typename T> {}template <typename T>  requires std::Integral<T>concept_map Arithmetic<T> {}template <typename T>  requires Float<T>concept_map Arithmetic<T> {}template <typename T>  requires Arithmetic<T>concept_map Arithmetic< std::complex<T> > {}// ================// Utility Concepts// ================// Concepts for functions mapping to same type or convertibleauto concept UnaryIsoFunction<typename Operation, typename Element>{    requires std::Callable1<Operation, Element>;    requires std::Convertible<std::Callable1<Operation, Element>::result_type, Element>;    typename result_type = std::Callable1<Operation, Element>::result_type;};auto concept BinaryIsoFunction<typename Operation, typename Element>{    requires std::Callable2<Operation, Element, Element>;    requires std::Convertible<std::Callable2<Operation, Element, Element>::result_type, Element>;    typename result_type = std::Callable2<Operation, Element, Element>::result_type;};#if 0auto concept CompatibleBinaryFunction<typename A1, typename A2, typename Result>{    typename result_type;    result_type F(A1, A2);    requires std::Convertible<result_type, Result>;}#endif// ==================// Algebraic Concepts// ==================auto concept Magma<typename Operation, typename Element>    : BinaryIsoFunction<Operation, Element>{    requires std::Assignable<Element>;    requires std::Assignable<Element, BinaryIsoFunction<Operation, Element>::result_type>;};// For algebraic structures that are commutative but not associative// As an example floating point numbers are commutative but not associative//   w.r.t. addition and multiplicationauto concept CommutativeMagma<typename Operation, typename Element>  : Magma<Operation, Element>,     algebra::Commutative<Operation, Element>{};// SemiGroup is a refinement which must be nominalauto concept SemiGroup<typename Operation, typename Element>  : Magma<Operation, Element>,     algebra::SemiGroup<Operation, Element>{};auto concept CommutativeSemiGroup<typename Operation, typename Element>  : SemiGroup<Operation, Element>,    CommutativeMagma<Operation, Element>{};// Adding identity// auto concept Monoid<typename Operation, typename Element>  : SemiGroup<Operation, Element>,     algebra::Monoid<Operation, Element> {    requires std::Convertible<identity_result_type, Element>;};auto concept CommutativeMonoid<typename Operation, typename Element>  : CommutativeSemiGroup<Operation, Element>,     Monoid<Operation, Element>{};concept PartiallyInvertibleMonoid<typename Operation, typename Element>  : Monoid<Operation, Element>,     algebra::Inversion<Operation, Element> {    typename is_invertible_result_type;    is_invertible_result_type is_invertible(Operation, Element);    requires std::Convertible<is_invertible_result_type, bool>;    requires std::Convertible<inverse_result_type, Element>;    // Does it overwrites the axiom from algebra::Inversion    axiom Inversion(Operation op, Element x)    {	// Only for invertible elements:	if (is_invertible(op, x))	    op( x, inverse(op, x) ) == identity(op, x); 	if ( is_invertible(op, x) )	    op( inverse(op, x), x ) == identity(op, x);     }};auto concept PartiallyInvertibleCommutativeMonoid<typename Operation, typename Element>  : PartiallyInvertibleMonoid<Operation, Element>,     CommutativeMonoid<Operation, Element>   {};concept Group<typename Operation, typename Element>  : PartiallyInvertibleMonoid<Operation, Element>,    algebra::Group<Operation, Element>{    axiom AlwaysInvertible(Operation op, Element x)    {	is_invertible(op, x);    }    axiom Inversion(Operation op, Element x)    {	// In fact this is implied by AlwaysInvertible and inherited Inversion axiom	// However, we don't rely on the compiler to deduce this	op( x, inverse(op, x) ) == identity(op, x);	op( inverse(op, x), x ) == identity(op, x);    }};auto concept AbelianGroup<typename Operation, typename Element>  : Group<Operation, Element>,     PartiallyInvertibleCommutativeMonoid<Operation, Element>,    algebra::AbelianGroup<Operation, Element>{};// ========================// Additive scalar concepts// ========================concept AdditiveMagma<typename Element>  : Magma< math::add<Element>, Element >{    typename plus_assign_result_type;      plus_assign_result_type operator+=(Element& x, Element y);    // requires std::Convertible<plus_assign_result_type, Element>;    // Operator + is by default defined with +=    typename addition_result_type;      addition_result_type operator+(Element x, Element y);#if 0    {	Element tmp(x);	return tmp += y;                      defaults NYS    }#endif     requires std::Convertible<addition_result_type, Element>;    // Type consistency with Magma    requires std::Convertible< addition_result_type,                               Magma< math::add<Element>, Element >::result_type>;    // SameType requires more rigorous specializations on pure algebraic functors    // requires std::SameType< addition_result_type,     // 	                    Magma< math::add<Element>, Element >::result_type>;    axiom Consistency(math::add<Element> op, Element x, Element y)    {	op(x, y) == x + y;                    	// Consistency definition between + and += might change later        x + y == x += y;	// Element tmp = x; tmp+= y; tmp == x + y; not proposal-compliant    }   }auto concept AdditiveCommutativeMagma<typename Element>  : AdditiveMagma<Element>,    CommutativeMagma< math::add<Element>, Element >{};auto concept AdditiveSemiGroup<typename Element>  : AdditiveMagma<Element>,     SemiGroup< math::add<Element>, Element >{};// We really need only one of the additive concepts for the requirements, // the requirements of the other would be implied.// Vice versa, to derive concept maps of nested concepts from// concept maps of refined concepts, they are needed all.auto concept AdditiveCommutativeSemiGroup<typename Element>  : AdditiveSemiGroup<Element>,    AdditiveCommutativeMagma<Element>,    CommutativeSemiGroup< math::add<Element>, Element >{};concept AdditiveMonoid<typename Element>  : AdditiveSemiGroup<Element>,    Monoid< math::add<Element>, Element >{    Element zero(Element v);    axiom Consistency (math::add<Element> op, Element x)    {	zero(x) == identity(op, x);    }};// We really need only one of the additive concepts for the requirements, // the requirements of the other would be implied.// Vice versa, to derive concept maps of nested concepts from// concept maps of refined concepts, they are needed all.auto concept AdditiveCommutativeMonoid<typename Element>  : AdditiveMonoid<Element>,    AdditiveCommutativeSemiGroup<Element>,    CommutativeMonoid< math::add<Element>, Element >{};concept AdditivePartiallyInvertibleMonoid<typename Element>  : AdditiveMonoid<Element>,    PartiallyInvertibleMonoid< math::add<Element>, Element >{    typename minus_assign_result_type;      minus_assign_result_type operator-=(Element& x, Element y);    // requires std::Convertible<minus_assign_result_type, Element>;         // Operator - by default defined with -=    typename subtraction_result_type;      subtraction_result_type operator-(Element& x, Element y);#if 0    {	Element tmp(x);	return tmp -= y;                      defaults NYS    }#endif     requires std::Convertible<subtraction_result_type, Element>;    typename unary_result_type;      unary_result_type operator-(Element x);#if 0    {	return zero(x) - x;      defaults NYS    }#endif     requires std::Convertible<unary_result_type, Element>;        axiom Consistency(math::add<Element> op, Element x, Element y)    {	// consistency between additive and pure algebraic concept	if ( is_invertible(op, y) )	    op(x, inverse(op, y)) == x - y;            	if ( is_invertible(op, y) )	    inverse(op, y) == -y;                      	// consistency between unary and binary -	if ( is_invertible(op, x) )	    identity(op, x) - x == -x;                 	// Might change later	if ( is_invertible(op, y) )	    x - y == x -= y;                                                       	// Element tmp = x; tmp-= y; tmp == x - y; not proposal-compliant    }  };auto concept AdditivePartiallyInvertibleCommutativeMonoid<typename Element>  : AdditivePartiallyInvertibleMonoid<Element>,    AdditiveCommutativeMonoid<Element>,     PartiallyInvertibleCommutativeMonoid< math::add<Element>, Element >{};auto concept AdditiveGroup<typename Element>  : AdditivePartiallyInvertibleMonoid<Element>,    Group< math::add<Element>, Element >{};auto concept AdditiveAbelianGroup<typename Element>  : AdditiveGroup<Element>,    AdditiveCommutativeMonoid<Element>,    AbelianGroup< math::add<Element>, Element >{};// ============================// Multiplitive scalar concepts// ============================concept MultiplicativeMagma<typename Element>  : Magma< math::mult<Element>, Element >{    typename mult_assign_result_type;      mult_assign_result_type operator*=(Element& x, Element y);    // requires std::Convertible<mult_assign_result_type, Element>;    // Operator * is by default defined with *=    typename mult_result_type;      mult_result_type operator*(Element x, Element y);#if 0    {	Element tmp(x);	return tmp *= y;                      defaults NYS    }#endif     requires std::Convertible<mult_result_type, Element>;        // Type consistency with Magma    requires std::Convertible< mult_result_type,                               Magma< math::mult<Element>, Element >::result_type>;    // SameType requires more rigorous specializations on pure algebraic functors    // requires std::SameType< mult_result_type,     // 	                    Magma< math::mult<Element>, Element >::result_type>;    axiom Consistency(math::mult<Element> op, Element x, Element y)    {	op(x, y) == x * y;                    	// Consistency definition between * and *= might change later        x * y == x *= y;	// Element tmp = x; tmp*= y; tmp == x * y; not proposal-compliant    }  }auto concept MultiplicativeSemiGroup<typename Element>  : MultiplicativeMagma<Element>,    SemiGroup< math::mult<Element>, Element >{};auto concept MultiplicativeCommutativeSemiGroup<typename Element>  : MultiplicativeSemiGroup<Element>,    CommutativeSemiGroup< math::mult<Element>, Element >{};concept MultiplicativeMonoid<typename Element>  : MultiplicativeSemiGroup<Element>,    Monoid< math::mult<Element>, Element >{    Element one(Element v);    axiom Consistency (math::mult<Element> op, Element x)    {	one(x) == identity(op, x);    }};auto concept MultiplicativeCommutativeMonoid<typename Element>  : MultiplicativeMonoid<Element>,    MultiplicativeCommutativeSemiGroup<Element>,    CommutativeMonoid< math::mult<Element>, Element >{};concept MultiplicativePartiallyInvertibleMonoid<typename Element>  : MultiplicativeMonoid<Element>,    PartiallyInvertibleMonoid< math::mult<Element>, Element >{    typename divide_assign_result_type;      divide_assign_result_type operator/=(Element& x, Element y);    // requires std::Convertible<divide_assign_result_type, Element>;         // Operator / by default defined with /=    typename division_result_type = Element;      division_result_type operator/(Element x, Element y);#if 0    {	Element tmp(x);	return tmp /= y;                      defaults NYS    }#endif     requires std::Convertible<division_result_type, Element>;        axiom Consistency(math::mult<Element> op, Element x, Element y)    {	// consistency between multiplicative and pure algebraic concept	if ( is_invertible(op, y) )	    op(x, inverse(op, y)) == x / y;            	// Consistency between / and /=, might change later	if ( is_invertible(op, y) )	    x / y == x /= y;              	// Element tmp = x; tmp/= y; tmp == x / y; not proposal-compliant     }  }; auto concept MultiplicativePartiallyInvertibleCommutativeMonoid<typename Element>  : MultiplicativePartiallyInvertibleMonoid<Element>,    MultiplicativeCommutativeMonoid<Element>,    PartiallyInvertibleCommutativeMonoid< math::mult<Element>, Element >{}; auto concept MultiplicativeGroup<typename Element>  : MultiplicativeMonoid<Element>,    Group< math::mult<Element>, Element >{};auto concept MultiplicativeAbelianGroup<typename Element>  : MultiplicativeGroup<Element>,    MultiplicativeCommutativeMonoid<Element>,    AbelianGroup< math::mult<Element>, Element >{};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99视频超级精品| 欧美精品日韩一本| 欧美天堂亚洲电影院在线播放| 欧美一区二区三区公司| 国产精品久久毛片| 日韩不卡手机在线v区| www.色综合.com| 欧美va日韩va| 婷婷久久综合九色综合伊人色| 国产成人精品亚洲日本在线桃色| 欧美日韩黄色影视| 中文字幕一区二区在线播放 | 日韩欧美国产不卡| 亚洲女人****多毛耸耸8| 精品一二三四区| 欧美日韩国产三级| 亚洲美女一区二区三区| 99麻豆久久久国产精品免费优播| 2021中文字幕一区亚洲| 秋霞电影一区二区| 欧美视频一区在线| 一区二区三区色| 91猫先生在线| 亚洲视频图片小说| 成人av资源在线观看| 国产人久久人人人人爽| 国产精品一区二区三区网站| 日韩一二在线观看| 日本欧美久久久久免费播放网| 色婷婷香蕉在线一区二区| 中文字幕在线不卡一区| 99精品国产热久久91蜜凸| 亚洲欧美综合网| 99久久国产综合精品女不卡| 国产精品久久午夜夜伦鲁鲁| av不卡在线播放| 18欧美乱大交hd1984| 色婷婷av一区| 亚洲国产毛片aaaaa无费看| 欧美图片一区二区三区| 天堂久久久久va久久久久| 欧美日韩精品专区| 琪琪久久久久日韩精品| 欧美变态tickling挠脚心| 久久国产日韩欧美精品| 精品国产乱码久久久久久牛牛| 麻豆精品视频在线| 久久综合九色综合欧美亚洲| 懂色av一区二区在线播放| 中文字幕中文字幕在线一区 | 日韩精品一区二区三区老鸭窝| 免费观看91视频大全| 久久网站最新地址| av中文字幕亚洲| 国产风韵犹存在线视精品| 久久久91精品国产一区二区精品 | 福利一区福利二区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 欧美国产日韩在线观看| 91在线精品一区二区| 亚洲aⅴ怡春院| 精品国产亚洲在线| 91在线看国产| 男女视频一区二区| 亚洲国产成人自拍| 欧美日韩国产精选| 国产成人综合网| 亚洲综合男人的天堂| 日韩欧美一二三四区| 国产99精品国产| 亚洲国产一区二区三区| 26uuu欧美日本| 色婷婷综合久久久久中文| 秋霞电影网一区二区| 1区2区3区欧美| 欧美一区二区日韩| 91免费看片在线观看| 精品一区二区在线视频| 一级日本不卡的影视| 久久久久久综合| 欧美区在线观看| 白白色 亚洲乱淫| 狂野欧美性猛交blacked| 亚洲人成电影网站色mp4| 日韩欧美中文字幕公布| 91在线码无精品| 国产成人综合亚洲网站| 日韩极品在线观看| 亚洲人成小说网站色在线 | 欧美精品一二三| av影院午夜一区| 国产精品一区二区久激情瑜伽| 亚洲国产日韩a在线播放性色| 国产精品嫩草99a| 久久只精品国产| 日韩欧美国产精品一区| 欧美巨大另类极品videosbest| 91色婷婷久久久久合中文| 国产毛片精品视频| 久久福利视频一区二区| 婷婷六月综合网| 亚洲一区二区三区小说| 亚洲另类一区二区| 亚洲三级电影网站| 国产精品久久久久精k8 | 午夜亚洲国产au精品一区二区| 综合婷婷亚洲小说| 中文字幕免费不卡| 欧美激情一区二区三区不卡 | 国产亚洲欧美在线| 国产精品情趣视频| 精品福利一二区| 日韩视频免费直播| 欧美日韩成人综合在线一区二区| 91免费视频大全| 日本久久电影网| 日本久久电影网| 色婷婷综合久久久久中文一区二区| 成人永久免费视频| 91浏览器打开| 在线视频国内一区二区| 欧美中文字幕亚洲一区二区va在线| www.日韩大片| 日本韩国精品在线| 欧美三级韩国三级日本三斤| 欧美日韩一区小说| 欧美一区二区视频免费观看| 日韩一区二区不卡| 久久婷婷国产综合精品青草| 国产欧美一区二区三区在线看蜜臀 | 精品国产乱码久久久久久影片| 精品福利av导航| 国产日本一区二区| 亚洲色图欧美偷拍| 丝袜亚洲另类欧美综合| 极品少妇xxxx精品少妇偷拍| 国产91露脸合集magnet| 91免费视频大全| 91精品国产欧美一区二区成人| 26uuu亚洲婷婷狠狠天堂| 国产精品欧美久久久久一区二区| 亚洲美女在线一区| 久久精品国产第一区二区三区| 国产精品白丝jk黑袜喷水| 91亚洲精华国产精华精华液| 欧美日韩久久久| 欧美激情在线观看视频免费| 一区二区三区不卡视频在线观看| 日韩不卡一区二区三区| 成人午夜视频福利| 欧美一区二区日韩一区二区| 中文字幕亚洲综合久久菠萝蜜| 亚洲成人免费看| 国产寡妇亲子伦一区二区| 欧美怡红院视频| 久久精品人人爽人人爽| 亚洲国产日韩av| 国产精品一卡二| 欧美日本在线视频| 国产精品美日韩| 天天综合天天综合色| 成人精品国产福利| 欧美一区二区日韩| 亚洲精品水蜜桃| 国产一区二区三区免费在线观看| 色噜噜夜夜夜综合网| 久久日韩精品一区二区五区| 夜夜爽夜夜爽精品视频| 国产成人免费高清| 欧美一区二区免费观在线| 亚洲欧美激情视频在线观看一区二区三区 | 精品蜜桃在线看| 最新中文字幕一区二区三区 | 色婷婷狠狠综合| 久久亚洲影视婷婷| 亚洲高清中文字幕| 97久久人人超碰| 久久久精品日韩欧美| 久久狠狠亚洲综合| 3751色影院一区二区三区| 日本一区二区成人在线| 久久99精品国产麻豆不卡| 精品视频全国免费看| 中文字幕一区二区不卡| 国产69精品久久久久777| 精品国产免费一区二区三区四区| 亚洲无人区一区| 91国产免费观看| 亚洲欧美国产三级| 97精品视频在线观看自产线路二| 国产香蕉久久精品综合网| 久久超碰97中文字幕| 欧美一二三区在线| 欧美日韩免费一区二区三区视频 | 国产精品卡一卡二| 黄一区二区三区| 精品日产卡一卡二卡麻豆| 奇米色一区二区三区四区| 欧美精品乱人伦久久久久久| 亚洲国产欧美日韩另类综合|