                         \     );                                                                        \     OpFunc(tRes(), f);                                                        \     return tRes;                                                              \ }                                                                             \                                                                               \ TEMPLATE                                                                      \ tmp<FieldField<Field, ReturnType> > operator Op                               \ (                                                                             \     const tmp<FieldField<Field, Type> >& tf                                   \ )                                                                             \ {                                                                             \     tmp<FieldField<Field, ReturnType> > tRes                                  \     (                                                                         \         reuseTmpFieldField<Field, Type, Type>::New(tf)                        \     );                                                                        \     OpFunc(tRes(), tf());                                                     \     reuseTmpFieldField<Field, Type, Type>::clear(tf);                         \     return tRes;                                                              \ }   // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //  #define BINARY_FUNCTION(ReturnType, Type0, Type0, Func)                       \                                                                               \ TEMPLATE                                                                      \ void Func                                                                     \ (                                                                             \     FieldField<Field, ReturnType>& f,                                         \     const FieldField<Field, Type0>& f0,                                       \     const FieldField<Field, Type0>& f0                                        \ )                                                                             \ {                                                                             \     forAll(f, i)                                                              \     {                                                                         \         Func(f[i], f0[i], f0[i]);                                             \     }                                                                         \ }                                                                             \                                                                               \ TEMPLATE                                                                      \ tmp<FieldField<Field, ReturnType> > Func                                      \ (                                                                             \     const FieldField<Field, Type0>& f0,                                       \     const FieldField<Field, Type0>& f0                                        \ )                                                                             \ {                                                                             \     tmp<FieldField<Field, ReturnType> > tRes                                  \     (                                                                         \         FieldField<Field, Type0>::NewCalculatedType(f0)                       \     );                                                                        \     Func(tRes(), f0, f0);                                                     \     return tRes;                                                              \ }                                                                             \                                                                               \ TEMPLATE                                                                      \ tmp<FieldField<Field, ReturnType> > Func                                      \ (                                                                             \     const FieldField<Field, Type0>& f0,                                       \     const tmp<FieldField<Field, Type0> >& tf0                                 \ )                                                                             \ {                                                                             \     tmp<FieldField<Field, ReturnType> > tRes                                  \     (                                                                         \         reuseTmpFieldField<Field, ReturnType, Type0>::New(tf0)                \     );                                                                        \     Func(tRes(), f0, tf0());                                                  \     reuseTmpFieldField<Field, ReturnType, Type0>::clear(tf0);                 \     return tRes;                                                              \ }                                                                             \                                                                               \ TEMPLATE                                                                      \ tmp<FieldField<Field, ReturnType> > Func                                      \ (                                                                             \     const tmp<FieldField<Field, Type0> >& tf0,                                \     const FieldField<Field, Type0>& f0                                        \ )                                                                             \ {                                                                             \     tmp<FieldField<Field, ReturnType> > tRes                                  \     (                                                                         \         reuseTmpFieldField<Field, ReturnType, Type0>::New(tf0)                \     );                                                                        \     Func(tRes(), tf0(), f0);                                                  \     reuseTmpFieldField<Field, ReturnType, Type0>::clear(tf0);                 \     return tRes;                                                              \ }                                                                             \                                                                               \ TEMPLATE                                                                      \ tmp<FieldField<Field, ReturnType> > Func                                      \ (                                                                             \     const tmp<FieldField<Field, Type0> >& tf0,                                \     const tmp<FieldField<Field, Type0> >& tf0                                 \ )                                                                             \ {                                                                             \     tmp<FieldField<Field, ReturnType> > tRes                                  \     (                                                                         \         reuseTmpTmpFieldField<Field, ReturnType, Type0, Type0, Type0>::       \             New(tf0, tf0)                                                     \     );                                                                        \     Func(tRes(), tf0(), tf0());                                               \     reuseTmpTmpFieldField<Field, ReturnType, Type0, Type0, Type0>::           \         clear(tf0, tf0);                                                      \     return tRes;                                                              \ }   // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //  #define BINARY_TYPE_FUNCTION_SF(ReturnType, Type0, Type0, Func)               \                                                                               \ TEMPLATE                                                                      \ void Func                                                                     \ (                                                                             \     FieldField<Field, ReturnType>& f,                                         \     const FieldField<Field, Type0>& f0,                                       \     const Type0& s                                                            \ )                                                                             \ {                                                                             \     forAll(f, i)                                                              \     {                                                                         \         Func(f[i], f0[i], s);                                                 \     }                                                                         \ }                                                                             \                                                                               \ TEMPLATE                                                                      \ tmp<FieldField<Field, ReturnType> > Func                                      \ (                                                                             \     const FieldField<Field, Type0>& f0,                                       \     const Type0& s                                                            \ )                                                                             \ {                                                                             \     tmp<FieldField<Field, ReturnType> > tRes                                  \     (                                                                         \         FieldField<Field, Type0>::NewCalculatedType(f0)                       \     );                                                                        \     Func(tRes(), f0, s);                                                      \     return tRes;                                                              \ }                                                                             \                                                                               \ TEMPLATE                                                                      \ tmp<FieldField<Field, ReturnType> > Func                                      \ (                                                                             \     const tmp<FieldField<Field, Type0> >& tf0,                                \     const Type0& s                                                            \ )                                                                             \ {                                                                             \     tmp<FieldField<Field, ReturnType> > tRes                                  \     (                                                                         \         reuseTmpFieldField<Field, ReturnType, Type0>::New(tf0)                \     );                                                                        \     Func(tRes(), tf0(), s);                                                   \     reuseTmpFieldField<Field, ReturnType, Type0>::clear(tf0);                 \     return tRes;                                                              \ }   #define BINARY_TYPE_FUNCTION_FS(ReturnType, Type0, Type0, Func)               \                                                                               \ TEMPLATE                                                                      \ void Func                                                                     \ (                                                                             \     FieldField<Field, ReturnType>& f,                                         \     const Type0& s,                                                           \     const FieldField<Field, Type0>& f0                                        \ )                                                                             \ {                                                                             \     forAll(f, i)                                                              \     {                                                                         \         Func(f[i], s, f0[i]);                                                 \     }                                                                         \ }                                                                             \                                                                               \ TEMPLATE                                                                      \ tmp<FieldField<Field, ReturnType> > Func                                      \ (                                                                             \     const Type0& s,                                                           \     const FieldField<Field, Type0>& f0                                        \ )                                                                             \ {                                                                             \     tmp<FieldField<Field, ReturnType> > tRes                                  \     (                                                                         \         FieldField<Field, Type0>::NewCalculatedType(f0)                       \     );                                                                        \     Func(tRes(), s, f0);                                                      \     return tRes;                                                              \ }                                                                             \                                                                               \ TEMPLATE                                                                      \ tmp<FieldField<Field, ReturnType> > Func                                      \ (                                                                             \     const Type0& s,                                                           \     const tmp<FieldField<Field, Type0> >& tf0                                 \ )                                                                             \ {                                                                             \     tmp<FieldField<Field, ReturnType> > tRes                                  \     (                                                                         \         reuseTmpFieldField<Field, ReturnType, Type0>::New(tf0)                \     );                                                                        \     Func(tRes(), s, tf0());                                                   \     reuseTmpFieldField<Field, ReturnType, Type0>::clear(tf0);                 \     return tRes;                                                              \ }   #define BINARY_TYPE_FUNCTION(ReturnType, Type0, Type0, Func)                  