ó
V™xTc           @   s´  d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d Z d1 Z d2 Z	 d	 g d
 d d g f f Z
 d e f d „  ƒ  YZ d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d d „ Z d0 d  „ Z d! „  Z d" „  Z d# „  Z  d$ „  Z! d% „  Z" d& „  Z# d' „  Z$ d( „  Z% d d) „ Z& d* „  Z' d+ „  Z( d, „  Z) d- „  Z* e+ d. k r°e* d/ ƒ n  d0 S(3   iÿÿÿÿ(   t   division(   t   operator_functor_info(   t   generate_std_imports(   t   utilss7   scitbx.source_generators.array_family.generate_algebrast   absolutet   pow2t   fmod_positivet   approx_equali   s   ElementType const& tolerancet	   tolerancet   emptyc           B   s   e  Z d  „  Z RS(   c         C   s   |  j  j | j  ƒ d  S(   N(   t   __dict__t   update(   t   selft   other(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   join   s    (   t   __name__t
   __module__R   (    (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyR	      s   iO   c   	      C   s	  | t  |  ƒ } d } t  | ƒ } d } | j ƒ  } x¼ | t  | ƒ | k rò | d k rk | j d ƒ } nF | j d ƒ } y# | | | d j d ƒ d 7} Wn t k
 r° n X| |  | | | d  d 7} d } d } | | d j ƒ  } q7 W| |  | | 7} | S(	   Nt    i    t   <t   ,i   s   
s     i   (   t   lent   stript   indext	   Exception(	   t   indentt   strt   max_line_lengtht   maxlent   extra_indentt   leit   resultt   restt   i(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   format_header   s&     # c         C   s=   d } x$ | d  D] } | |  | d 7} q W| |  | d S(   NR   iÿÿÿÿs   
(    (   R   t   listt   rt   line(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   format_list-   s    c         C   s   |  j  d d ƒ S(   Nt   _plainR   (   t   replace(   t   array_type_name(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   base_array_type_name3   s    c         C   sc   d d g g } t  |  ƒ d k r7 | j d d g ƒ n( t  |  ƒ d k r_ | j d d
 g ƒ n  | S(   Nt   typenamet   ElementTypet   tinyt   smalls   std::size_tt   Nt   reft	   const_reft   versat   AccessorType(   R,   R-   (   s   refR0   R1   (   R)   t   append(   R(   R   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   get_template_args6   s    c         C   só   t  |  ƒ } | d k r | g Sg  } xÇ t d | d ƒ D]² } | rU | d g } n) | d d | d d t | ƒ g g } t |  ƒ d k r¤ | j | d ƒ n: x7 | d D]+ } | j | d | d t | ƒ g ƒ q¯ W| j | ƒ q9 W| S(   Ni   i    R,   (   R4   t   xrangeR   R)   R3   (   R(   t   n_paramst   equal_element_typet   singleR   R    t   single_numberedt   s(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   get_numbered_template_args>   s     ))c         C   sH   g  } x; |  D]3 } x* | D]" } | | k r | j  | ƒ q q Wq W| S(   N(   R3   (   t   numbered_template_argsR   t   pt   d(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   get_template_header_argsO   s     c         C   sX   d d l  m } g  } x; |  D]3 } | j | g  | D] } | d ^ q3 d ƒ ƒ q W| S(   Niÿÿÿÿ(   R   i   s   , (   t   stringR   R3   (   R<   R   R   R=   R>   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   get_template_parameter_argsV   s
    1c         C   sP   d d l  m } t |  ƒ } d | g  | D] } | | ƒ ^ q) d ƒ d } | S(   Niÿÿÿÿ(   R   s	   template<s   , t   >(   R@   R   R?   (   R<   R   t   hat   xR   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   get_template_header]   s    0c         C   s4   g  } x' | D] } | j  |  d | d ƒ q W| S(   NR   RB   (   R3   (   R(   t   template_parameter_argsR   R=   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   get_template_parametersc   s    i    c         C   s[   t  ƒ  } t |  | | ƒ | _ t | j ƒ | _ t | j ƒ | _ t |  | j ƒ | _ | S(   N(	   R	   R;   t   ntaRA   t   tpaRE   t   headerRG   t   params(   R(   R6   R7   R   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt"   get_template_header_and_parametersi   s    	c         C   s#   |  j  d ƒ s |  S|  j d d ƒ S(   NR-   t   N1t+   SCITBX_ARRAY_FAMILY_SMALL_ALGEBRA_MIN_N1_N2(   t
   startswithR'   (   t   param(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   derive_return_array_type_simplet   s     c         C   sQ   d d l  m } |  d | | g | d ƒ d } | j d ƒ rM | d  d S| S(   Niÿÿÿÿ(   R   R   s   , RB   s   >>s    >(   R@   R   t   endswith(   R(   t   element_typet   addlR   R#   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   wrap_element_typex   s
    " c         C   s@   t  ƒ  } |  | _ |  | _ |  d k r< d | _ d | _ n  | S(   NR/   R1   R0   (   R	   t   return_array_type_namet   param_array_type_name(   R(   R#   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   adjust_array_type_names~   s    				c         C   sò   t  |  ƒ } | d | _ | d | _ | d | _ t | j d d ƒ | _ g  } t | j d ƒ d k r… | j d d d g } n  t | j ƒ | _	 t
 | j | j | ƒ | _ g  | _ x0 | j D]% } | j j t
 | j | | ƒ ƒ qÅ W| S(   Ni    i   i   (   RX   t   return_elment_typet   function_namet   arg_element_typesR;   RW   RH   R   RE   RJ   RU   RV   t   return_array_typet   arg_array_typesR3   (   R(   t   special_defR#   RT   t   aet(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   special_decl_params‡   s      	c         C   s9  t  |  ƒ } | d k ru | j t | j d | ƒ ƒ | j j | d d ƒ d g | _ | d k rû d g | _ qû n† | j t | j d | ƒ ƒ | j d d d g | _ | d k rÇ d g | _ n4 | d	 k rû | d
 k så t ‚ d d | g | _ n  t	 | j ƒ d k r1| j
 d | j d g | _ n/ | j
 d d | j d d | j d g | _ t	 | j d ƒ d k rÓ| j d d d d k rª| j d c d 7<qÓ| j d c d | j d d d 7<n  | j d c d 7<d | j d g | j d | _ d d g | _ | d k r5d d g | _ n  | S(   Ni   i    R+   t   booleant   bool_resultt   logicalt   booli   s   n/at
   arithmetics    typename binary_operator_traits<s     ElementType1, ElementType2>::R   s     s       RM   iÿÿÿÿs-   , SCITBX_ARRAY_FAMILY_SMALL_ALGEBRA_MIN_N1_N2s   , RB   s   typedef t   ElementType1t   ElementType2(   i   i   (   Ra   Rb   Rc   (   Ra   Rb   Rc   (   i   i   (   RX   R   RL   RW   RK   t   insertt   return_element_typeRH   t   AssertionErrorR   RV   R\   t   typedef_return_array_typet   element_types(   R(   t   op_typet   op_classt
   type_flagsR7   R#   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   operator_decl_params˜   sB    
	!
)c         C   sZ   d } | d  k	 r2 d | d d d d f } n  t |  ƒ d k rO d | f Sd | f S(	   Nt   as   a%di    i   i   R1   s   %s.accessor()s	   %s.size()(   t   NoneR)   (   R(   Ro   t   arg_name(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   get_result_constructor_argsÃ   s     c         C   sè   t  ƒ  } d | _ d | _ d | _ t |  ƒ d k rƒ d | d d d d f | _ | d k rn d | _ n  t |  | ƒ | _ n  d d g | _ x. t d ƒ D]  } | | rŸ d	 | j | <qŸ qŸ Wd
 | d d d
 | d | _ | S(   NR.   R   R,   s
   a%d.size()i    i   i   s5   if (a1.size() != a2.size()) throw_range_error();
    s   .begin()t   sat   _(   i   i   (	   R	   t   loop_nt   size_assertt   result_constructor_argsR)   Rt   t   beginR5   t   type_flags_code(   R(   Ro   R#   R    (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   binary_operator_algo_paramsË   s     				 
 !c         C   sÒ   t  | ƒ } x¿ d d f D]± \ } } t | d | d ƒ } |  d t d	 | j ƒ t d	 | j ƒ | | j d t d
 | j ƒ f IJt | ƒ d k r¯ |  d t	 j
 | f IJq |  d | t	 j
 | f IJq Wd  S(   NRe   t   -Rc   t   !t   unaryi   i    sŒ   %s
  inline
%s
  operator%s(%s const& a) {
%s
    return_array_type;
    typedef typename return_array_type::value_type return_element_type;s     s       R,   sÉ       return_array_type result;
    array_operation_a(fn::functor_%s<
        return_element_type,
        ElementType>(),
      a.begin(), result.begin(), a.size(), true_type());
    return result;
  }
s²       return return_array_type(%s,
      make_init_functor(make_array_functor_a(
        fn::functor_%s<
          return_element_type,
          ElementType>(), a.begin())));
  }
(   s
   arithmeticR}   (   s   logicalR~   (   i   i    (   Rt   Rp   R!   RJ   R%   R\   RK   Rk   R)   R   t   unary_functors(   t   fR(   Ry   Rn   t	   op_symbolR>   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   generate_unary_opsÝ   s     c   	      C   sT  t  | ƒ } t | d d d ƒ } t | d d ƒ } g  } t | d ƒ d k rg | d d d g } n  t | j d | ƒ } | j d d d g g ƒ t | ƒ } | j d d g g ƒ t | ƒ } |  d	 t	 d
 | ƒ | | j
 d | f IJt | ƒ d k r|  d IJn |  d | f IJ|  d t	 d
 | ƒ | j d d ƒ | j
 d f IJd  S(   NR   s   n/ai   i    i   t   ReturnElementTypeR*   t   UnaryOperationsª   %s
  inline
  %s
  apply(UnaryOperation const& op,
        %s const& a,
        type_holder<ReturnElementType> /*result_type_holder*/) {
    typedef %s return_array_type;s     R,   s‡       return_array_type result;
    array_operation_a(op,
      a.begin(), result.begin(), a.size(), true_type());
    return result;
  }s¢       return return_array_type(%s,
      make_init_functor(
        array_functor_a<UnaryOperation, ElementType, ReturnElementType>(
          op, a.begin())));
  }s�   
%s
  inline
  %s
  apply(UnaryOperation const& op,
        %s const& a) {
    return apply(op, a, type_holder<typename UnaryOperation::result_type>());
  }
s$   typename UnaryOperation::result_type(   i   i    (   Rt   Rp   R;   R   RU   RV   Rh   RE   R3   R!   RK   R)   R'   (	   R�   R(   Ry   R>   RH   RT   R\   t   header2t   header1(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   generate_unary_apply   s8     

		c         C   s-  t  | d | | ƒ } t | | ƒ } |  d t d | j ƒ t d | j ƒ | | j d | j d t d | j ƒ f IJt | ƒ d k r× |  d | j	 t
 j | | j d | j d | j d | j d | j f IJnR |  d	 | j | j | j	 t
 j | | j d | j d | j d | j d f IJd  S(
   Nt   binarysœ   %s
  inline
%s
  %s(
    %s const& a1,
    %s const& a2) {
%s
    return_array_type;
    typedef typename return_array_type::value_type return_element_type;s     i    i   s       R,   sÈ       return_array_type result;
    array_operation_%s(fn::functor_%s<
        return_element_type,
        %s,
        %s>(),
      a1%s, a2%s, result.begin(), %s, true_type());
    return result;
  }
s»       %sreturn return_array_type(%s,
      make_init_functor(make_array_functor_%s(
        fn::functor_%s<
          return_element_type,
          %s,
          %s>(), a1%s, a2%s)));
  }
(   Rp   R|   R!   RJ   R%   R\   RK   Rk   R)   R{   R   t   binary_functorsRl   Rz   Rw   Rx   Ry   (   R�   R(   Rn   R‚   Ro   RZ   R>   Rq   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   elementwise_binary_op0  s*    	
$	
c         C   sÀ   t  | d d | ƒ } | j d j d d ƒ | j d <t | | ƒ } |  d t d | j ƒ | j d | | j d | j d | j | j t j	 | | j
 d | j d | j d | j f IJd  S(	   NR‰   s   n/ai    R0   R/   s½   %s
  inline
  %s&
  operator%s(
    %s& a1,
    %s const& a2) {
    %sarray_operation_in_place_%s(fn::functor_%s<
        %s,
        %s>(),
      a1.begin(), a2%s, %s);
    return a1;
  }
s     i   (   Rp   RK   R'   R|   R!   RJ   Rx   R{   R   t   in_place_binary_functorsRi   Rl   Rz   Rw   (   R�   R(   Rn   R‚   Ro   R>   Rq   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   elementwise_inplace_binary_op]  s     



c         C   sA   d | } x0 d d d f D] } t  |  | | | | | ƒ q Wd  S(   Nt   operatori   i    (   i   i   (   i   i    (   i    i   (   R‹   (   R�   R(   Rn   R‚   RZ   Ro   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   generate_elementwise_binary_opx  s    
c         C   s1   x* d d f D] } t  |  | | | | ƒ q Wd  S(   Ni   i    (   i   i   (   i   i    (   R�   (   R�   R(   Rn   R‚   Ro   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt&   generate_elementwise_inplace_binary_op~  s    c         C   s¸   t  | ƒ } t | d d d ƒ } x� | D]ˆ } |  d t d | j ƒ t d | j ƒ | | j d t d | j ƒ f IJt | ƒ d k rœ |  d	 | f IJq( |  d
 | | f IJq( Wd  S(   NR   Re   i   i    s„   %s
  inline
%s
  %s(%s const& a) {
%s
    return_array_type;
    typedef typename return_array_type::value_type return_element_type;s     s       R,   s¸       return_array_type result;
    array_operation_a(fn::functor_%s<return_element_type, ElementType>(),
      a.begin(), result.begin(), a.size(), true_type());
    return result;
  }
s�       return return_array_type(%s,
      make_init_functor(make_array_functor_a(
        fn::functor_%s<return_element_type, ElementType>(), a.begin())));
  }
(   i   i    (	   Rt   Rp   R!   RJ   R%   R\   RK   Rk   R)   (   R�   R(   t   function_namesRy   R>   RZ   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   generate_1arg_element_wise„  s    c         C   sM  xF| D]>} x5d d d f D]$} t  | d d | | ƒ } t | | ƒ } |  d t d | j ƒ t d | j ƒ | | j d | j d t d | j ƒ f IJt | ƒ d k rö |  d	 | j	 | | j
 d | j
 d | j d | j d | j f IJq |  d
 | j | j | j	 | | j
 d | j
 d | j d | j d f IJq Wq Wd  S(   Ni   i    R‰   s   n/asœ   %s
  inline
%s
  %s(
    %s const& a1,
    %s const& a2) {
%s
    return_array_type;
    typedef typename return_array_type::value_type return_element_type;s     s       R,   s¹   
    return_array_type result;
    array_operation_%s(fn::functor_%s<
        return_element_type, %s, %s>(),
      a1%s, a2%s, result.begin(), %s, true_type());
    return result;
  }
s®       %sreturn return_array_type(%s,
      make_init_functor(make_array_functor_%s(
        fn::functor_%s<return_element_type,
          %s, %s>(),
        a1%s, a2%s)));
  }
(   i   i   (   i   i    (   i    i   (   Rp   R|   R!   RJ   R%   R\   RK   Rk   R)   R{   Rl   Rz   Rw   Rx   Ry   (   R�   R(   R‘   R7   RZ   Ro   R>   Rq   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   generate_2arg_element_wise¡  s,    	$	c   	      C   sL  xE| D]=} x4d d d f D]#} t  | d d | | ƒ } t | | ƒ } |  d t d | j ƒ t d | j ƒ | | j d | j d | d t d | j ƒ f IJt | ƒ d k rù |  d	 | j	 | d
 d
 d
 | j
 d | j
 d | d | j f	 IJq |  d | j | j | j	 | d
 d
 d
 | j
 d | j
 d | d f
 IJq Wq Wd  S(   Ni   i    R‰   Rb   s¤   %s
  inline
%s
  %s(
    %s const& a1,
    %s const& a2,
    %s) {
%s
    return_array_type;
    typedef typename return_array_type::value_type return_element_type;s     s       R,   sÉ   
    return_array_type result;
    array_operation_%s_s(fn::functor_%s<
        return_element_type, %s, %s, %s>(),
      a1%s, a2%s, %s,
      result.begin(), %s, true_type());
    return result;
  }
R+   s¸       %sreturn return_array_type(%s,
      make_init_functor(make_array_functor_%s_s(
        fn::functor_%s<return_element_type,
          %s, %s, %s>(),
        a1%s, a2%s, %s)));
  }
(   i   i   (   i   i    (   i    i   (   Rp   R|   R!   RJ   R%   R\   RK   Rk   R)   R{   Rz   Rw   Rx   Ry   (	   R�   R(   R‘   R7   t	   addl_argsRZ   Ro   R>   Rq   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   generate_x_x_s_element_wiseÏ  s.    			+	c   	      C   s1  t  | | ƒ } t | j ƒ d k rÈ |  d t d | j ƒ | j | j | j d | j f IJt | ƒ d k r” |  d | j | d | d f IJq-t | ƒ } |  d | | j | d | d f IJnexbd d d f D]Q} t	 | | ƒ } g  } xI t
 d ƒ D]; } | | r'| j | j | ƒ q | j | j | ƒ q W|  d	 t d | j ƒ | j | j | d | d | j f IJt | ƒ d k rÚ|  d
 | j | j | d | d | d | j d | j d | j f IJqØ |  d | j | j | j | j | d | d | d | j d | j d f	 IJqØ Wd  S(   Ni   sF   %s
  inline
  %s
  %s(%s const& a) {
    typedef %s return_array_type;s     i    R,   s¬       return_array_type result;
    array_operation_a(fn::functor_%s<
      %s,
      %s >(),
      a.begin(), result.begin(), a.size(), true_type());
    return result;
  }
i   s™       return return_array_type(%s,
      make_init_functor(make_array_functor_a(
        fn::functor_%s<
          %s,
          %s >(), a.begin())));
  }
s^   %s
  inline
  %s
  %s(
    %s const& a1,
    %s const& a2) {
    typedef %s return_array_type;s¸       return_array_type result;
    array_operation_%s(fn::functor_%s<
        %s,
        %s,
        %s >(),
      a1%s, a2%s, result.begin(), %s, true_type());
    return result;
  }
i   s«       %sreturn return_array_type(%s,
      make_init_functor(make_array_functor_%s(
        fn::functor_%s<
          %s,
          %s,
          %s >(), a1%s, a2%s)));
  }
(   i   i   (   i   i    (   i    i   (   R`   R   R]   R!   RJ   R\   RZ   R)   Rt   R|   R5   R3   R[   R{   Rz   Rw   Rx   Ry   (	   R�   R(   R^   R=   Ry   Ro   Rq   RK   R    (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   generate_element_wise_special  sV    		
	$	c         C   s  t  j |  d | d ƒ } t  j | t ƒ | } | d k rD d } n  d } t | ƒ d k re d } n  | d | j ƒ  f d	 | f IJ| d
 k r  | d IJn  | d | f IJt | | ƒ x; t j D]0 } t	 | | d | ƒ t
 | | d | d ƒ qÈ Wx$ t j D] } t	 | | d | ƒ qWx$ t j D] } t	 | | d | ƒ q-Wt | | t t j t j t j ƒ t | | t t j t j ƒ x! t j D] } t | | | ƒ q—Wx% t D] } t t | | f | ƒ q¸W| d IJ| J| d IJ| J| d | j ƒ  f IJ| j ƒ  d  S(   Ns   %s_algebra.ht   wR/   R1   t   functorsR,   t	   operatorss™   #ifndef SCITBX_ARRAY_FAMILY_%s_ALGEBRA_H
#define SCITBX_ARRAY_FAMILY_%s_ALGEBRA_H

#ifndef DOXYGEN_SHOULD_SKIP_THIS

#include <scitbx/array_family/%s.h>
i   R-   sÃ   #if (defined(BOOST_MSVC) && BOOST_MSVC <= 1300) // VC++ 7.0
#define SCITBX_ARRAY_FAMILY_SMALL_ALGEBRA_MIN_N1_N2 N1
#else
#define SCITBX_ARRAY_FAMILY_SMALL_ALGEBRA_MIN_N1_N2 (N1<N2?N1:N2)
#endif

s3  #include <scitbx/array_family/operator_traits_builtin.h>
#include <scitbx/array_family/detail/operator_functors.h>
#include <scitbx/array_family/detail/generic_array_%s.h>
#include <scitbx/array_family/detail/std_imports.h>
#include <scitbx/array_family/misc_functions.h>

namespace scitbx { namespace af {
Re   t   =Rc   Ra   s   }} // namespace scitbx::afs"   #endif // DOXYGEN_SHOULD_SKIP_THISs*   #endif // SCITBX_ARRAY_FAMILY_%s_ALGEBRA_H(   R   t	   join_opent   write_this_is_auto_generatedt   thisR)   t   upperRƒ   R   t   arithmetic_binary_opsR�   R�   t   logical_binary_opst   boolean_binary_opsR’   t   misc_functions_aR   t
   cmath_1argt   cstdlib_1argt   complex_1argR“   t   misc_functions_a_at
   cmath_2argt   algorithm_2argt   complex_specialR–   t   misc_functions_x_x_st   applyR•   t   close(   t
   target_dirR(   R�   t   include_array_type_namet   generic_includeR‚   R^   t   args(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   one_typeT  sX    			

c         C   s"   x d D] } t  |  | ƒ q Wd  S(   NR/   R,   R-   t   sharedR1   (   s   refs   tinys   smallR²   s   versa(   R±   (   R­   R(   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   run›  s    t   __main__t   .N(   R   R   (   R   (,   t
   __future__R    t%   scitbx.source_generators.array_familyR   R   t   scitbx.source_generatorsR   R�   R¢   R¦   Rª   t   objectR	   R!   R%   R)   R4   R;   R?   RA   RE   RG   RL   RQ   RU   RX   R`   Rp   Rr   Rt   R|   Rƒ   Rˆ   R‹   R�   R�   R�   R’   R“   R•   R–   R±   R³   R   (    (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_algebras.pyt   <module>   sP   									
					*		#	0	-				,	2	S	G	