class_docstr: Rudimentary, generic GLSL printing tools.
  
  Additional settings:
  'use_operators': Boolean (should the printer use operators for +,-,*, or functions?)
class_docstr_tok: ["Rudimentary",",","generic","GLSL","printing","tools",".","Additional","settings",":","'use_operators","'",":","Boolean","(","should","the","printer","use","operators","for","+",",","-",",","*",",","or","functions","?",")"]
code: def _print_Add(self, expr, order=None):
      if self._settings["use_operators"]:
          return CodePrinter._print_Add(self, expr, order=order)
  
      terms = expr.as_ordered_terms()
  
      def partition(p, l):
          return reduce(
              lambda x, y: (x[0] + [y], x[1])
              if p(y)
              else (x[0], x[1] + [y]),
              l,
              ([], []),
          )
  
      def add(a, b):
          return self._print_Function_with_args("add", (a, b))
          # return self.known_functions['add']+'(%s, %s)' % (a,b)
  
      neg, pos = partition(
          lambda arg: arg.could_extract_minus_sign(), terms
      )
      if pos:
          s = pos = reduce(
              lambda a, b: add(a, b), (self._print(t) for t in pos)
          )
      else:
          s = pos = self._print(self._settings["zero"])
  
      if neg:
          # sum the absolute values of the negative terms
          neg = reduce(
              lambda a, b: add(a, b), (self._print(-n) for n in neg)
          )
          # then subtract them from the positive terms
          s = self._print_Function_with_args("sub", (pos, neg))
          # s = self.known_functions['sub']+'(%s, %s)' % (pos,neg)
      return s
  
imports: from __future__ import annotations
  from sympy.core import Basic, S
  from sympy.core.function import Lambda
  from sympy.core.numbers import equal_valued
  from sympy.printing.codeprinter import CodePrinter
  from sympy.printing.precedence import precedence
  from functools import reduce
label_desc: Use image node_id 22 for calling the GLSLPrinter obj's underlying member method code with example usage: obj._print_Add(expr, order) and returns: s, CodePrinter, reduce, self