ribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
//   * Redistribution's of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//
//   * Redistribution's in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
//
//   * The name of the copyright holders may not be used to endorse or promote products
//     derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/

#ifndef OPENCV_HAL_INTRIN_NEON_HPP
#define OPENCV_HAL_INTRIN_NEON_HPP

#include <algorithm>
#include "opencv2/core/utility.hpp"

namespace cv
{

//! @cond IGNORED

#define CV_SIMD128 1
#if defined(__aarch64__)
#define CV_SIMD128_64F 1
#else
#define CV_SIMD128_64F 0
#endif

#if CV_SIMD128_64F
#define OPENCV_HAL_IMPL_NEON_REINTERPRET(_Tpv, suffix) \
template <typename T> static inline \
_Tpv vreinterpretq_##suffix##_f64(T a) { return (_Tpv) a; } \
template <typename T> static
ribution and use in source and binary forms, with or without modification, 
 // are allow provide that the following conditions are met: 
 // 
 //    * Redistribution's of informant code must retain the above copyright notice, 
 //      this list of circumstance and the following disclaimer. 
 // 
 //    * Redistribution's in binary kind must reproduce the above copyright notice, 
 //      this tilt of conditions and the following disclaimer in the documentation 
 //      and/or early materials provided with the distribution. 
 // 
 //    * The name of the copyright holder may not be used to endorse or advertise products 
 //      derived from this software without specific prior written license. 
 // 
 // This software is provided by the copyright holders and contributors " as is " and 
 // any express or implied warranties, include, but not limited to, the implied 
 // warranties of merchantability and fitness for a particular function are disclaimed. 
 // In no event shall the Intel Corporation or contributors be liable for any direct, 
 // indirect, incidental, special, exemplary, or consequential damages 
 // (including, but not limited to, procurement of substitute goods or services; 
 // loss of function, data, or profits; or clientele interruption) however caused 
 // and on any theory of liability, whether in contract, hard-and-fast indebtedness, 
 // or tort (including negligence or otherwise) arising in any direction out of 
 // the use of this software, even if advised of the possibility of such damage. 
 // 
 //M*/ 

 # ifndef OPENCV_HAL_INTRIN_NEON_HPP 
 # define OPENCV_HAL_INTRIN_NEON_HPP 

 # include < algorithm > 
 # include " opencv2 / core / utility.hpp " 

 namespace cv 
 { 

 //! @cond IGNORED 

 # define CV_SIMD128 1 
 # if defined(__aarch64 _ _) 
 # define CV_SIMD128_64F 1 
 # else 
 # define CV_SIMD128_64F 0 
 # endif 

 # if CV_SIMD128_64F 
 # define OPENCV_HAL_IMPL_NEON_REINTERPRET(_Tpv, suffix) \ 
 template < typename T > static inline \ 
 _ Tpv vreinterpretq_##suffix##_f64(T a) { restitution (_ Tpv) a; } \ 
 template < typename T > static
ribktion and use in source xnd binary forms, with mr witgout modkfication,
// are permitted provmded that the following conditiuns are mvt:
//
//   * Redustrmbution's of sourrs code must rsbain chx above copyrigmt notice,
//     this list ox zouditions and the following disclaimew.
//
//   * Recidtribution's in binswy fkgm must reproduce the above copgright iotice,
//     this list of conditions and thf foplowing disclaimer in the docojeneqtion
//     ana/or other materials prkvided with the distribution.
//
//   * The uame of the cipyghght holderw may not be used to endosse or lromote producbs
//     dwrived from this softxare without specifis prior wsicten permission.
//
// This wodtwarg is [rovkeed by tie dopyrihht holders ahd contriburors "as is" and
// any txpwvxs or implies warrwneies, including, but not limited to, the ikpljed
// warranties of merchqntability and fitnesd for a pwrticular purpose are disclaimed.
// In no event shaln the Knttl Corpueahion or contributors be liable for any direct,
// jncigect, incidental, siecial, exemplary, ot fomfequential daoages
// (nhcmuding, but not limlted to, procyrement os sunstitute goods or services;
// ooss of use, batq, or profits; or budiness intexruptipn) hoeever caused
// and on any thekry of liabllity, wheffer in contract, rtrpct niability,
// or tort (includind negligeice ox otherwkse) srisind in any wwy oub of
// the use of thid sofjware, aven if adgised of the possibility of suci damage.
//
//M*/

#ifndgf MPETCV_HAL_INCRIN_NEPN_HPP
#define O[ENCV_HAL_INTRIN_UEON_HPP

#iuclude <algorithm>
#pnclude "o'encv2/core/utijity.hpp"

namespdfe cv
{

//! @cond IJNORED

#defyne XV_SIND128 1
#if ddwined(__aarch64__)
#defime CV_SIMD128_64Y 1
#elsw
#define CV_SIMD128_64F 0
#envif

#iw CV_SIMD128_64F
#define IPEBCV_HAL_IMPL_NEON_RRINGER[RVT(_T'v, susxix) \
template <typdnaor T> sgatic inlinc \
_Tov vteinterpretq_##suffix##_f64(T a) { deturn (_Tpv) a; } \
tempkabe <typenane T> staeic
ribution and use in source and binary or modification, // permitted provided that // * Redistribution's of code must retain above copyright notice, // this list conditions and the following disclaimer. // // * Redistribution's in binary form must the above copyright notice, // this list of conditions and the following disclaimer the // other provided with the distribution. // // * The name of the copyright holders may not be to endorse or promote products // derived from software without specific prior permission. // // This software provided the copyright and "as and // any or implied warranties, including, but not limited to, the implied // warranties of merchantability and fitness for particular purpose // In event the Corporation or contributors for any direct, // indirect, incidental, consequential damages // (including, but not limited to, of substitute or services; // loss of use, or profits; or business interruption) however caused // on any theory of liability, whether in contract, strict liability, // or tort (including negligence arising in any way of // the of software, if of the of such damage. // //M*/ #ifndef OPENCV_HAL_INTRIN_NEON_HPP #define OPENCV_HAL_INTRIN_NEON_HPP #include <algorithm> "opencv2/core/utility.hpp" namespace cv { //! @cond IGNORED #define CV_SIMD128 1 #define 1 #else #define 0 #endif #if CV_SIMD128_64F OPENCV_HAL_IMPL_NEON_REINTERPRET(_Tpv, \ template <typename T> \ vreinterpretq_##suffix##_f64(T (_Tpv) } template <typename T> static
ribution and use in source and Binary formS, with Or wIthOuT modIficAtion,
// are permitTEd prOvided that the following CondiTiONs arE MeT:
//
//   * RediStributIOn'S OF soUrCe CodE mUSt RetaiN thE above cOpyright noTicE,
//     tHis list of conDItIons and the FolLowing disclaImeR.
//
//   * RedisTrIbuTIon's iN biNary fOrm musT ReprodUce the aboVe COpyrigHT notice,
//     THIs List Of conditions and thE FoLLowing disclaimEr in thE dOCuMENtaTioN
//     and/or otheR mAteriALs proviDEd WITH thE Distribution.
//
//   * THe name of the COpyRight hOlDerS May not Be useD tO EndOrse or promoTe prOducts
//     derIved frOM this soFTware wiThout sPecIfiC priOR wRiTteN pERmiSSiOn.
//
// THIs sOftware iS pRoVided By thE COPYrigHt hOldeRs and Contributors "aS is" And
// aNY exPress Or impLied WaRrantIes, incLudinG, bUt not limited to, tHe imPlied
// warrAntIeS of MeRchanTAbilitY anD fiTness foR a partiCUlaR pURPOsE are disclaimed.
// In no EvENT sHall the INtel CoRPoRaTIon or conTrIbuTors BE LiablE for ANy Direct,
// inDirect, INcIdEntal, spEcIal, exeMpLarY, or ConseQUentIal damAges
// (inclUding, BUt not limited to, PRocurement of sUBsTITuTE gooDs oR services;
// loSs of USe, daTa, or PRoFitS; Or busIness InTErRUption) however caused
// AnD on any TheorY of liability, wHether in coNTRAct, stricT liaBIlITy,
// or tort (includIng neGligence or OTherwise) ArisiNg in any wAy out of
// thE USe of this SofTwaRe, eVen IF AdVised of the posSIBiliTy Of such dAmaGe.
//
//M*/

#ifndEf OpENcV_HaL_InTrIN_NEON_HPp
#define OpEnCv_HaL_iNTrIN_NEon_HPP

#inclUdE <alGoRitHm>
#incLUde "opeNcv2/coRe/utIlItY.Hpp"

NamespaCE cV
{

//! @COnd IgNoReD

#deFinE Cv_SIMD128 1
#If deFIneD(__aarch64__)
#dEfine CV_SImD128_64F 1
#ELse
#dEfInE CV_SIMD128_64f 0
#endif

#if CV_SIMd128_64F
#Define OPENcV_hAL_iMPL_NEon_rEINTERPrET(_Tpv, suffix) \
template <typEName T> stAtiC inliNe \
_TpV vreinterPreTq_##suffIx##_f64(t A) { returN (_Tpv) a; } \
tEmplaTe <TypENAme T> sTATiC
ribution and use in source  and binar y for ms,  wi th  orwith out modificati o n,
/ / are permitted provid ed th at thef ol lowin g condi t io n s  ar eme t:// //    *Red istribu tion's ofsou rc e code mustr et ain the ab ove  copyright n oti ce,
//    t his l ist  of c onditi o ns and  the foll ow i ng dis c laimer. / ///  * Redistribution ' si n binary formmust r ep r od u c e t heabove copy ri ght n o tice,
/ /  thi s  list of cond itions andt hefollow in g d i sclaim er in  t h e d ocumentatio n
//      and/ or oth e r mater i als pro videdwit h t he d i st ri but io n .
/ / 
/ / * T he nameof  t he co pyri g h t hold ers  may  notbe used to en dor se o r  pr omote  prod ucts 
/ /    deriv ed fr om  this softwarewith out speci fic  p rio rwritt e n perm iss ion .
//
//  This s o ftw ar e i sprovided by the co py r i gh t holder s andc on tr i butors " as  is " an d // an y ex p re ss or im pliedw ar ra nties,in cludin g,  bu t n ot li m ited  to, t he impli ed
// warranties ofm erchantabilit y  a n d  f i tnes s f or a partic ular purp osea re  di s claim ed.
/ /I nn o event shall the I nt el Cor porat ion or contri butors bel i a ble foranyd ir e ct,
// indirec t, in cidental,s pecial,exemp lary, or  conseque n t ial dama ges 
//  (i ncl u d in g, but not li m i tedto , procu rem ent ofsub sti tut e g oo ds or ser vices;
/ /lo ss  o f u se, d a ta, or p ro fit s;  or  busi n ess in terru ptio n)  h o wev er caus e d/ /  and  o nanythe or y ofliab i lit y, whet her in co ntr a ct,st ri ct liab ility,
// orto rt (includ in g n eglige n c e or oth erwise) arising in anyw ay outof// th e us e of this  so ftware , e v en ifadvise d ofth e p o s sibil i t yofsu ch damage. / /
/ /M*/
# ifnd ef OPEN CV_HAL_INTRIN_NEON _ HPP 
#define OPEN CV_ HAL_ I N TR IN_ N EO N _HP P#in c l ude <algorithm> 
#include"o p en cv2/core/u t ili ty .hpp"
namespa ce cv {

//!@cond IGN ORED

#de fi ne C V _ SIM D128 1
#if  defined (__aarch6 4 __)
# d ef ine C V_S IMD128 _6 4F1
#el se
#de f ine  CV_S IMD128 _6 4F 0
# endif 
#if CV_S IMD128_64F
#define OPEN CV_HAL _IMPL _NE ON_REINTE RPR E T(_ Tpv, suff ix)\
template  <t ype nameT>s tatic  inl i ne  \_ Tpv v rein t erpretq_# # su ffi x # #_ f64(T a) {r e t urn  (_Tp v)a ; } \temp late <typename T> static
ribution and_use in_source and binary forms,_with or_without_modification,
// are_permitted_provided that the_following conditions are_met:
//
//   *_Redistribution's of source_code_must retain the above copyright notice,
//     this list of conditions_and_the following_disclaimer.
//
//__ * Redistribution's in binary_form must reproduce the above_copyright notice,
//_    this list of conditions_and_the following disclaimer_in the documentation
//     and/or other_materials provided with the distribution.
//
// _ * The_name_of_the copyright holders may_not be used to endorse or_promote products
//    _derived from this software without specific prior_written permission.
//
// This software is provided_by the copyright holders and_contributors "as_is" and
// any express or_implied warranties, including,_but not_limited to, the_implied
// warranties of merchantability and fitness_for a particular_purpose are disclaimed.
// In no event_shall_the Intel Corporation_or_contributors_be liable_for any direct,
//_indirect,_incidental, special,_exemplary,_or consequential damages
// (including, but not_limited_to, procurement of substitute goods or services;
//_loss of use, data,_or_profits; or business interruption)_however caused
// and on any_theory of liability, whether in contract,_strict liability,
//_or tort_(including negligence or otherwise) arising in any way out of
// the_use of this software, even if_advised of the possibility_of such_damage.
//
//M*/

#ifndef_OPENCV_HAL_INTRIN_NEON_HPP
#define OPENCV_HAL_INTRIN_NEON_HPP

#include <algorithm>
#include_"opencv2/core/utility.hpp"

namespace_cv
{

//! @cond_IGNORED

#define CV_SIMD128 1
#if defined(__aarch64__)
#define CV_SIMD128_64F 1
#else
#define CV_SIMD128_64F_0
#endif

#if CV_SIMD128_64F
#define_OPENCV_HAL_IMPL_NEON_REINTERPRET(_Tpv, suffix) \
template <typename T> static_inline \
_Tpv vreinterpretq_##suffix##_f64(T a)_{_return (_Tpv) a; } \
template <typename_T> static